スポンサーリンク

現在開いているスプレッドシートのシートをPDFにする

スプレッドシートをPDFとして出力するのに、「ファイル - ダウンロード - PDF (.pdf)」で出力・ダウンロードをすることができますが、運用として、処理の流れでそのままPDFをGoogleドライブへ出力をしたい場合があると思います。その時に使用することができるソースコードです。

ソースコード

/**
 * 現在開いているシートよりPDFを出力
 */
function createPdf() {

  // アクティブなスプレッドシート
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

  // スプレッドシートID
  const spreadsheetId = spreadsheet.getId();

  // アクティブなシートID
  const gid = spreadsheet.getActiveSheet().getSheetId();

  // スプレッドシートのあるフォルダ
  const folder = DriveApp.getFileById(spreadsheetId).getParents().next();

  // 出力するPDFファイル名
  const fileName = `${spreadsheet.getSheetName()}_${Utilities.formatDate(new Date(), 'JST', 'yyyyMMdd')}.pdf`;

  // 出力オプション
  var opts = {
    'exportFormat' : 'pdf',    // ファイル形式の指定 (pdf / csv / xls / xlsx)
    'format'       : 'pdf',    // ファイル形式の指定 (pdf / csv / xls / xlsx)
    'size'         : 'A4',     // 用紙サイズの指定 (legal / letter / A4)
    'portrait'     : 'true',   // 用紙の向き (true : 縦向き / false : 横向き)
    'fitw'         : 'true',   // 幅を用紙に合わせるか (true : 合わせる / false : 合わせない)
    'sheetnames'   : 'false',  // シート名をPDF上部に表示するか (true : 表示する / false : 表示しない)
    'printtitle'   : 'false',  // スプレッドシート名をPDF上部に表示するか (true : 表示する / false : 表示しない)
    'pagenumbers'  : 'false',  // ページ番号の有無 (true : 表示する / false : 表示しない)
    'gridlines'    : 'false',  // グリッドラインの表示有無 (true : 表示する / false : 表示しない)
    'fzr'          : 'true',   // 固定行の表示有無 (true : 表示する / false : 表示しない)
    'top_margin'   : 0.8,
    'bottom_margin': 0.8,
    'left_margin'  : 0.7,
    'right_margin' : 0.7,
  };

  let urlExt = [];
  
  // オプション名と値を「=」で繋げて配列に格納
  for( optName in opts ){
    urlExt.push( optName + '=' + opts[optName] );
  }

  // 各要素を「&」で繋げる
  const options = urlExt.join('&');

  // API使用のためのOAuth認証用トークン
  var token = ScriptApp.getOAuthToken();

  // URLの組み立て
  const url = `https://docs.google.com/spreadsheets/d/${spreadsheetId}/export?gid=${gid}&${options}`;

  // PDF作成
  var response = UrlFetchApp.fetch(
    url, {
      headers: {'Authorization': 'Bearer ' +  token}
    }
  );

  // Blob を作成する
  var blob = response.getBlob().setName(fileName);

  // PDFを指定したフォルダに保存
  folder.createFile(blob);
}

解説

後半のPDFを出力する部分の主な解説です。

22行目〜37行目は、出力するPDFの出力オプションの設定をしています。
(詳細はソースコードのコメントを確認してください。)

42行目〜44行目は、上記の出力オプションを、「=」でつないで配列に詰め直しています。

47行目は、上記の「=」でつないだPDFの出力オプションを、「&」でつないで文字列にしています。

50行目は、PDFを作成する際に必要となるアクセストークン(認証済みかどうかを判別する文字列)を取得します。

53行目は、PDFを作成するためのURLを組み立てます。

56行目〜60行目は、上記で作成したURLを実行します。

63行目は、上記のURLの実行結果より、PDFファイルのblobデータを取得します。

66行目は、現在開いているスプレッドシートのあるフォルダへPDFを出力しています。

スポンサーリンク
レンタルサーバー
おすすめの記事