こんにちは、もりです!
この記事では「スプレッドシートの指定シートをPDF出力する方法」を紹介します。PDF出力するセル範囲を指定できます。
出力するPDFの保存先は、Googleドライブ内の指定フォルダです。
スポンサーリンク
Contents
スプレッドシートの指定シートをPDF出力する
スプレッドシートの指定シートをPDF出力するスクリプトがこちらです。
- 21行目:PDF出力する「セル範囲」を指定する
- 41行目:PDF出力先の「フォルダ」を指定する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
function exportSheetToPDF(){ const ss = SpreadsheetApp.getActiveSpreadsheet(); // PDF出力するシートを指定 const sheetName = 'test'; const ssId = ss.getId(); const sheetId = ss.getSheetByName(sheetName).getSheetId(); // スプレッドシートをPDF出力するためのURL const url = 'https://docs.google.com/spreadsheets/d/' + ssId + '/export?' // PDF出力のオプションを設定 const options = 'exportFormat=pdf&format=pdf' + '&gid=' + sheetId //PDFにするシートの「シートID」 + '&portrait=false' //true(縦) or false(横) + '&size=A4' //印刷サイズ + '&fitw=true' //true(幅を用紙に合わせる) or false(原寸大) + '&gridlines=false' //グリッドラインの表示有無 + '&range=A1%3AD5' //★POINT★セル範囲を指定 // %3A はコロン(:)を表す const requestUrl = url + options; //API使用のためのOAuth認証 const token = ScriptApp.getOAuthToken(); const params = { 'headers' : {'Authorization':'Bearer ' + token}, 'muteHttpExceptions' : true }; const response = UrlFetchApp.fetch(requestUrl, params); //Blobオブジェクトを作成 const blob = response.getBlob(); blob.setName(sheetName + '.pdf'); //PDFファイル名を設定 //指定のフォルダにPDFファイルを作成 const folder = DriveApp.getFolderById('フォルダID'); folder.createFile(blob); } |
PDF出力する「セル範囲」を指定する
上記スクリプト21行目の「rangeパラメータ」でセル範囲を指定します。
range=開始セルコロン終了セル
→ コロン(:)は%3Aと記述します(URLエンコード)
- A1セル~D5セルを指定する場合の記述
range=A1%3AD5
- C5セル~E9セルを指定する場合の記述
range=C5%3AE9
こちらのブログを参考にさせていただきました:PDFを作成したい
【実行結果】スクリプトを実行してPDF出力
A1セル~E10セルにデータが入力されたスプレッドシートです。
このスプレッドシートについて、セル範囲(A1~D5)を指定して作成したPDFがこちら。
続いて、C5セル~E9セルを指定した場合の出力結果がこちら。C5セルを起点としてPDFが作成されました。
【おまけ】スプレッドシートが存在するフォルダ内にPDFを出力する
上述のスクリプトは、PDF出力先のフォルダを「フォルダID」で指定しました。これでは、出力先を変えたい時に、スクリプトを書き換えなければなりません。
41行目以降を下記のように変更すると、スプレッドシートが存在するフォルダ内にPDFを出力することができます。
1 2 3 4 5 |
//このスプレッドシートが存在するフォルダにPDFファイルを作成 const parentFolders = DriveApp.getFileById(ss.getId()).getParents(); const folderId = parentFolders.next().getId(); const folder = DriveApp.getFolderById(folderId); folder.createFile(blob); |
以上です!
スポンサーリンク
スポンサーリンク