【GAS】スプレッドシートを丸ごとPDF化

  • 2022.02.23
  • GAS
【GAS】スプレッドシートを丸ごとPDF化

スプレッドシートの全てのシートを一括でPDF化する方法を記載します。

様々なwebページでは以下のように説明されています。

function createPdf(){  
   //pdfを作成するフォルダのIDに置き換えてください
   var folderId = "PDFを作成するフォルダのID";
   var targetFolder = DriveApp.getFolderById(folderId);

  //pdf化するスプレッドシートを取得
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var fileName = "pdfのファイル名";
  var pdf = ss.getAs('application/pdf');
  //pdfファイルの名前を設定
  pdf.setName(fileName);
  //GoogleドライブにPDFに変換したデータを保存
  targetFolder.createFile(pdf); 

しかし、これだと細かい設定ができません。pdfのサイズだったり余白だったり。そこで以下のようにするとPDFに対して細かいカスタマイズができます。

function createPdf(){
   //pdfを作成するフォルダのIDに置き換えてください
   var folderId = "PDFを作成するフォルダのID";
   var targetFolder = DriveApp.getFolderById(folderId);

   var fileName = "pdfのファイル名";

    //pdf化するスプレッドシートを取得
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var baseUrl = "https://docs.google.com/spreadsheets/d/"
          +  ss.getId()
          + "/export?id="
          + ss.getId();
 
    var options = "&exportFormat=pdf&format=pdf"
             // + '&id=' + newSs.getId()
              + "&size=A4" //用紙サイズ (A4)
              + "&portrait=true"  //用紙の向き true: 縦向き / false: 横向き
              + "&scale=4"
              + "&fitw=true"  //ページ幅を用紙にフィットさせるか true: フィットさせる / false: 原寸大
              + "&top_margin=0.50" //上の余白
              + "&right_margin=0.50" //右の余白
              + "&bottom_margin=0.50" //下の余白
              + "&left_margin=0.50" //左の余白
              + "&horizontal_alignment=CENTER" //水平方向の位置
              + "&vertical_alignment=TOP" //垂直方向の位置
              + "&printtitle=false" //スプレッドシート名の表示有無
              + "&sheetnames=false" //シート名の表示有無
              + "&gridlines=false" //グリッドラインの表示有無
              + "&fzr=false" //固定行の表示有無
              + "&fzc=false" //固定列の表示有無;

      var url = baseUrl + options;

      var token = ScriptApp.getOAuthToken();

      var options = {
        headers: {
          'Authorization': 'Bearer ' +  token
        }
      };
 
 
      var blob = UrlFetchApp.fetch(url, options).getBlob().setName(fileName + '.pdf');
      var pdf = targetFolder.createFile(blob);

}

このようにすることでoptionsの部分を変更すればカスタマイズできるようになります。

試してみてください

GASカテゴリの最新記事