GASでチェックした作業報告書を帳票作成してPDF保存するコード|作業報告書システム完成版

印刷用シートでチェックした作業報告書だけを対象にします。
新規スプレッドシートへ帳票を作成できます。
確認後に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保存するコード

詳しくは実践プロジェクト②で詳しい使い方を解説しています。

〖実践プロジェクト②〗現場はスマホ入力、事務所は帳票印刷

実際の使い方や作業の流れは、手順記事で解説しています。

コメント