GASで担当者別集計表をPDF保存するコード(DriveApp)|案件管理システムVer.1完成版

・担当者別集計表を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スプレッドシートを配布しています。

サンプルシートをコピーする(前回までのデータ)

完成版シートをコピーする(案件管理システム_完成版)

関連記事

GASで案件データを登録するコード

GASで担当者別集計表を自動作成するコード

GASで入力フォームを自動クリアするコード

次回予告

次回から新プロジェクトを開始します。
お楽しみに

コメント