LoginSignup
0
2

GASでスプレッドシートからPDFファイルをたくさん作る

Last updated at Posted at 2022-10-19

この記事は移行しました!最新の内容はこちらをご覧ください😀

スプレッドシートのデータをPDFファイルとして大量に出力したいときが、人生に1度や2度はやってきますね。
そんなときはGASで。

やりたいこと

スプレッドシートの1行1行をPDFファイルにしてGoogleドライブに出力する。

例)
A列:ファイル名
B列:URL(本文の内容)

GAS

function createPdfFiles() {
  Logger.log('start');
  var sheet_id = '{スプレッドシートのID}';
  var sheet_name = '{スプレッドシートのシート名}';
  var folder_id = '{出力先のGoogleドライブのID}';

  var sheet = SpreadsheetApp.openById(sheet_id).getSheetByName(sheet_name);
  var folder = DriveApp.getFolderById(folder_id);

  var sheet_data = sheet.getDataRange().getValues();
  for (var i = 1; row = sheet_data[i]; i++) {
    var item = rowToItem(row);
    createPdf(item, folder);
  }

  function rowToItem(row) {
    var item = {};
    item['name'] = row[0];
    item['url'] = row[1];
    return item;
  }

  function createPdf(item, folder) {
    let doc = DocumentApp.create(item['name']);
    let body = doc.getBody();
    var paragraphs = body.getParagraphs();
    var p1 = paragraphs[0];
    p1.appendText(item['url']).setLinkUrl(item['url']);

    // 一旦Googleドキュメントとして保存(保存しないとPDFとして取得できなかったため。。)
    doc.saveAndClose();

    var pdf = doc.getAs('application/pdf');
    pdf.setName(doc.getName() + '.pdf');
    folder.createFile(pdf);

    // 一旦保存していたGoogleドキュメントを削除
    DriveApp.getFileById(doc.getId()).setTrashed(true);
  }
}
0
2
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
0
2