1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GASでスプレッドシートからPDFを作成する方法

Last updated at Posted at 2023-06-19
createPDF.gs
/**
 * 現在開いているシートより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ファイル名(シート名_20230619.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を指定したフォルダに保存
  var file = folder.createFile(blob);

  return file.getUrl();
}
`
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?