・担当者別集計表をPDF化してGoogle Driveへ保存
・保存フォルダを自動作成
・帳票管理を自動化できる
このコードでできること
・担当者別集計表をPDF保存
・Google Driveへ自動保存
・保存フォルダを自動作成
初回実行時の注意
初めて実行するとGoogleの承認画面が表示されます。
このコードはGoogle DriveへPDFを保存するため、利用許可が必要です。
承認後にすぐ動作しない場合がありますが、その場合はもう一度実行してみてください。
環境によっては2~3回実行すると正常に動作します。
「エラーかな?」と思うかもしれませんが、Googleの権限設定が行われているだけなので心配ありません。
一度承認が完了すれば、次回以降はスムーズに利用できます。
GASコード
function exportStaffSummaryPDF() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("担当者別集計(GAS)");
const folderName = "担当者別集計PDF";
let folder;
const folders = DriveApp.getFoldersByName(folderName);
if (folders.hasNext()) {
folder = folders.next();
} else {
folder = DriveApp.createFolder(folderName);
}
const gid = sheet.getSheetId();
const url =
"https://docs.google.com/spreadsheets/d/" +
ss.getId() +
"/export?format=pdf" +
"&gid=" + gid +
"&size=A4" +
"&portrait=false" +
"&fitw=true" +
"&sheetnames=false" +
"&printtitle=false" +
"&pagenumbers=false" +
"&gridlines=false" +
"&fzr=false";
const token = ScriptApp.getOAuthToken();
const response = UrlFetchApp.fetch(url, {
headers: {
Authorization: "Bearer " + token
}
});
const fileName =
"担当者別集計_" +
Utilities.formatDate(
new Date(),
Session.getScriptTimeZone(),
"yyyyMMdd_HHmmss"
) +
".pdf";
const file = folder.createFile(
response.getBlob().setName(fileName)
);
SpreadsheetApp.getUi().alert(
"PDF保存が完了しました。\n\n" +
"保存先フォルダ:担当者別集計PDF\n" +
"ファイル名:" + file.getName()
);
}
カスタマイズ例
パターン①
保存フォルダ名を変更する
const folderName = "案件管理PDF";
パターン②
縦向きPDFで保存する
"&portrait=true"
よくあるエラー
症状
Googleの承認画面が何度も表示される
対処法
・承認処理を最後まで完了する
・再度スクリプトを実行する
症状
PDFが保存されない
対処法
・Google Driveの容量を確認する
・担当者別集計(GAS)シート名を確認する
サンプルファイル
このコードを試せるGoogleスプレッドシートを配布しています。
関連記事
次回予告
次回から新プロジェクトを開始します。
お楽しみに
コメント