実現したいこと
GASによって請求書の発行の自動化を行う。
表紙の範囲:A1:AK58
別紙1の範囲:AL1:BV58
別紙2の範囲:BW1:DG58
別紙の入力がない場合は表紙の範囲のみPDF化
別紙1に入力があれば、表紙と別紙1の2ページをPDF化
別紙2に入力があれば、表紙と別紙1,2の3ページをPDF化
したい。
該当のソースコード
function generateInvoicePDF() { 省略 // チェックボックスごとに処理を実行 for (let i = 0; i < checkBoxValues.length; i++) { const checkbox = checkBoxValues[i]; if (checkbox === true) { const invoiceSheetName = sheetNames[i]; const invoiceSheet = spreadsheet.getSheetByName(invoiceSheetName); const checkboxName = sheetNames[i]; const pdfBlobs = []; const fileNames = []; let fileName = `${formattedDate}_${invoiceNumber}_${checkboxName}_${client} 御中.pdf`; // 請求書のPDFを作成して保存 pdfBlobs.push(createInvoicePDF(invoiceSheet, spreadsheetId, invoiceSheet.getRange("A1:AK58"))); fileNames.push(fileName); // 条件1: BO45<>0, CZ45=0 if (templateSheet.getRange(`BO45`).getValue() !== "") { pdfBlobs.push(createInvoicePDF(invoiceSheet, spreadsheetId, invoiceSheet.getRange("AL1:BV58"))); fileNames.push(`${formattedDate}_${invoiceNumber}_${checkboxName}_別紙1_${client} 御中.pdf`); } // 条件2: BO45<>0, CZ45<>0 if (templateSheet.getRange(`CZ45`).getValue() !== "") { pdfBlobs.push(createInvoicePDF(invoiceSheet, spreadsheetId, invoiceSheet.getRange("BW1:DG58"))); fileNames.push(`${formattedDate}_${invoiceNumber}_${checkboxName}_別紙2_${client} 御中.pdf`); } // まとめてファイルを作成して保存 const createdFiles = []; let file; for (let i = 0; i < pdfBlobs.length; i++) { const createdFile = newFolder.createFile(pdfBlobs[i]).setName(fileNames[i]); createdFiles.push(createdFile); Utilities.sleep(5000); // 一つ作成するごとに5秒待機 if (i === 0) { file = createdFile; } } }
// 請求書のPDFを作成する関数 function createInvoicePDF(invoiceSheet, spreadsheetId, range) { const options = 'exportFormat=pdf&format=pdf' + '&gid=' + invoiceSheet.getSheetId() + '&portrait=true' + '&size=A4' + '&scale=4' + '&gridlines=false' + '&range=' + encodeURIComponent(range.getA1Notation()); const url = 'https://docs.google.com/spreadsheets/d/' + spreadsheetId + '/export?' + options; const blob = UrlFetchApp.fetch(url, { headers: { Authorization: 'Bearer ' + ScriptApp.getOAuthToken() }, contentType: 'application/pdf' }).getBlob(); return blob; }
試したこと
それぞれの範囲でのPDFを出力し、結合後のファイルを削除するということを考えたが実現できず。。。
ググってみても複数ページのPDF化が見当たらなかったのでそもそも出来ないのでしょうか?

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。