タイトルの通りですが「GoogleスプレッドシートからPDFを作成して指定フォルダに保存するスクリプト」を作成してみます。
PDF作成用のスクリプト全文
まずは、PDFを作成するためのスクリプトを作成します。
function makePDFfile(){
const date = Utilities.formatDate( new Date(), 'Asia/Tokyo', 'yyyyMMddHHmmss');
const ssId = "スプレッドシートIDを指定する";
const folderId = "フォルダIDを指定する";
const folder = DriveApp.getFolderById(folderId);
const ssheet =SpreadsheetApp.openById(ssId);
const key = ssheet.getId();
const sheet = ssheet.getSheets()[0];
const sheetId = sheet.getSheetId();
const url = "https://docs.google.com/spreadsheets/d/" + key + "/export?gid=" + sheetId+ "&format=pdf&portrait=false&size=A4&gridlines=false&fitw=true";;
const fileName = "ファイル"+date;
// API使用のためのOAuth認証
const token = ScriptApp.getOAuthToken();
// headers作成
const header = {headers: {'Authorization': 'Bearer ' + token}};
//PDF生成するURLをfetchする
const pdf = UrlFetchApp.fetch(url,header).getBlob().setName(fileName + ".pdf");
//指定フォルダにPDF作成
folder.createFile(pdf);
}
実行すると、例のごとく権限設定画面になりますので、承認してスクリプトの権限を与えていきます。このあたりは過去に何度か書いていますので、過去の記事をご参考ください。
これで、指定したフォルダにスプレッドシートのPDFファイルが作成されます!!
ということで、中のスクリプトをひとつずつ見ていきます。
[rml_read_more]
変数の作成
const date = Utilities.formatDate( new Date(), 'Asia/Tokyo', 'yyyyMMddHHmmss');
const ssId = "スプレッドシートIDを指定する";
const folderId = "フォルダIDを指定する";
const folder = DriveApp.getFolderById(folderId);
const ssheet =SpreadsheetApp.openById(ssId);
const key = ssheet.getId();
const sheet = ssheet.getSheets()[0];
const sheetId = sheet.getSheetId();
まずは、スクリプトに必要な変数を準備していきます。
- date:今日の日付をyyyyMMddHHmmss形式で格納(ファイル名に設定するため)
- ssId:スプレッドシートのID
- folderId:フォルダのID
- folder:フォルダを取得
- ssheet:スプレッドシートを取得
- key:シートのキー値
- sheet:シート
- sheetId:シートのID
これらの変数を準備します。
フォルダIDとは?
フォルダIDとは、マイドライブや共有ドライブで開いているフォルダの「folders/」以降の文字列です。
スプレッドシートIDとは?
フォルダIDとは、開いているスプレッドシートの「d/」以降の文字列です。
APIでPDF生成
APIを使ってPDFを生成します。
const url = "https://docs.google.com/spreadsheets/d/" + key + "/export?gid=" + sheetId+ "&format=pdf&portrait=false&size=A4&gridlines=false&fitw=true";;
const fileName = "ファイル"+date;
// API使用のためのOAuth認証
const token = ScriptApp.getOAuthToken();
// headers作成
const header = {headers: {'Authorization': 'Bearer ' + token}};
//PDF生成するURLをfetchする
const pdf = UrlFetchApp.fetch(url,header).getBlob().setName(fileName + ".pdf");
//指定フォルダにPDF作成
folder.createFile(pdf);
createFileで指定フォルダにファイルを作成して、完了です。
まとめ
という感じで、スクリプトを実行するだけで指定したフォルダにPDFファイルが自動作成されました!
工夫次第で、他にも色々と応用できそうです。また別記事でも追加していきます。
ご参考ください。