GASでスプレッドシートからPDFファイルをたくさん作る
スプレッドシートのデータを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);
}
}