印刷用シートでチェックした作業報告書だけを対象にします。
新規スプレッドシートへ帳票を作成できます。
確認後にPDF保存できる、実務向けGASコードです。
このコードでできること
・チェックした作業報告書だけを帳票化
・新規スプレッドシートへ報告書を作成
・写真付きの作業報告書にも対応
・帳票確認後にPDFとして保存
・ファイル名を報告番号付きで自動作成
・PDF保存後の管理もしやすい
コード
GASコード
このコードは長いため、一部のみ表示しています。
全文コードは下のダウンロードから確認してください。
/**
* 第1段階:
* 印刷用シートでチェックした作業報告書だけを
* 新規スプレッドシートに帳票として作成するコード
*/
function createCheckedReportsSpreadsheet() {
const dataSheetName = '印刷用シート';
const templateSheetName = '作業報告書';
const folderId = '保存先フォルダIDを入力';
const ss = SpreadsheetApp.getActiveSpreadsheet();
const dataSheet = ss.getSheetByName(dataSheetName);
const templateSheet = ss.getSheetByName(templateSheetName);
if (!dataSheet) {
throw new Error('印刷用シートが見つかりません。');
}
if (!templateSheet) {
throw new Error('作業報告書シートが見つかりません。');
}
const lastRow = dataSheet.getLastRow();
if (lastRow < 2) {
Browser.msgBox('印刷用シートにデータがありません。');
return;
}
const data = dataSheet.getRange(2, 1, lastRow - 1, 14).getValues();
const checkedRows = [];
for (let i = 0; i < data.length; i++) {
if (data[i][0] === true) {
checkedRows.push({
sheetRow: i + 2,
values: data[i]
});
}
}
if (checkedRows.length === 0) {
Browser.msgBox('チェックが入っているデータがありません。');
return;
}
// この後、帳票作成・写真貼り付け・チェック解除を行います
}
/**
* 第2段階:
* 作成済みの帳票スプレッドシートをPDF保存するコード
*/
function exportCreatedReportSpreadsheetToPdf() {
const folderId = '保存先フォルダIDを入力';
const reportSpreadsheetId = PropertiesService
.getScriptProperties()
.getProperty('LAST_REPORT_SPREADSHEET_ID');
if (!reportSpreadsheetId) {
Browser.msgBox('先に帳票作成用の関数を実行してください。');
return;
}
const reportSs = SpreadsheetApp.openById(reportSpreadsheetId);
const folder = DriveApp.getFolderById(folderId);
const sheets = reportSs.getSheets();
let pdfCount = 0;
sheets.forEach(function(sheet) {
const fileNameCell = sheet.getRange('A18').getValue();
const fileName = fileNameCell ? String(fileNameCell) : sheet.getName() + '.pdf';
exportSheetAsPdf(reportSs, sheet, folder, fileName);
pdfCount++;
});
Browser.msgBox(pdfCount + '件の作業報告書をPDF保存しました。');
}
▶ GASでチェックした作業報告書を帳票作成してPDF保存するコード
カスタマイズ例
パターン①
保存先フォルダを変更したい場合は、folderIdを差し替えます。
const folderId = 'ここに保存先フォルダIDを入力';
パターン②
PDFファイル名を変更したい場合は、作成ルールを変更します。
return safeReportNo + '_' + safeWorkerName + '_' + dateText + '.pdf';
よくあるエラー
チェックが入っているデータがありません
印刷用シートで、帳票作成したい行にチェックが入っていない場合に表示されます。
対処法
・印刷用シートのA列にチェックがあるか確認
・チェックボックスがTRUEになっているか確認
先に帳票作成用の関数を実行してください。
PDF保存する前に、帳票作成用のスプレッドシートが作成されていない場合に表示されます。
対処法
・先にcreateCheckedReportsSpreadsheetを実行
・帳票用ファイルが作成されたか確認
・その後にexportCreatedReportSpreadsheetToPdfを実行
サンプルファイル
このコードを試せるGoogleスプレッドシートを配布しています。
▶ 作業報告書関連_サンプルセット
関連記事
▶ GASでフォーム回答データを印刷用シートへ取り込むコード
▶ GASでチェックボックスにチェックが入っていたら2つのシートに転記するコード
▶ GASで担当者別集計表をPDF保存するコード
詳しくは実践プロジェクト②で詳しい使い方を解説しています。
▶ 〖実践プロジェクト②〗現場はスマホ入力、事務所は帳票印刷
実際の使い方や作業の流れは、手順記事で解説しています。

コメント