経理・受取担当 向け|運用マニュアル

スプレッドシート運用・確認待ち対応・トリガー再実行・トラブルシュート

1. システム全体像

  1. 業者さんが投稿フォームから完了届PDFをアップロード
  2. PDFが Driveルートフォルダ(稲城建設業協会_完了届) に保存される
  3. Apps Scriptの processNewCompletionReports1時間ごと に自動実行
  4. 未処理ファイルを Gemini OCR にかけて 「完了届」タブ に1行追記
  5. 処理後のファイルは _処理済み/ または _確認待ち/ に自動移動

2. 主要リンク(ブックマーク推奨)

📊 スプレッドシート(完了届OCR一覧) https://docs.google.com/spreadsheets/d/1f97Ddcje-4PDgkCG8F6vCwAr67_89HLhx5hEBbVqxzA/edit
📁 Driveルートフォルダ(稲城建設業協会_完了届) https://drive.google.com/drive/folders/199dN8fzskWmjbRke_Bt6Vv5HDjAXwi_k
📝 業者投稿フォーム(業者向け配布URL) https://script.google.com/macros/s/AKfycbxzZXeqkO7vFfz8Cupj-KeYMksihULkLpRUh0tZ1F8uL1YP6BUMntue7COLLYb9Qb71xg/exec
⚙️ Apps Script Editor(OCR本体・receipt-ocr-gas) https://script.google.com/d/1Bp8MyZR0jHXuVcsB9t3rzH52-WQNSwxPBuOO5zBKzdFnddISX4_jmJ74/edit
⚙️ Apps Script Editor(業者投稿フォーム・inagi-form-upload-gas) https://script.google.com/d/1Qb5jARW0ALjZQ0OxLfgp3WlGDJ9LPXZwLcV7kgrlFu5JMjfIkZbNY_aL/edit

3. スプレッドシート「完了届」タブの見方

列構成(17列)

内容備考
取込日時OCR処理が完了した日時JST
ファイルリンクDrive上の元PDFへのリンククリックで原本確認
業者名OCRで抽出した施工業者名「(施工業者 ○○)」表記優先
契約番号財契第○号欠落だと確認待ちフラグ
発注者例:いなぎグリーンウェルネス財団
契約件名例:公園維持管理業務委託(単価契約)
作業箇所例:平尾入定塚緑地
着手年月日 / 完了月日和暦→西暦変換済み
支出科目(大/中/小)例:事業費 / 公園管理 / 委託費3列に分解
小計 / 消費税 / 合計金額(カンマ抜き数値)小計+消費税≠合計なら確認待ち
信頼度0〜1のスコア0.7未満は確認待ちフラグ
確認フラグ要確認の理由空=OK / 値あり=要目視
明細表(工種番号・形状寸法・数量・単価)は 意図的に列に持っていません(ヘッダ+合計のみ集約)。明細が必要な場合は原本PDFを開いてください。

4. 確認待ちフラグが立つ条件

下記いずれかに該当すると 確認フラグ列に理由が入り、ファイルは Drive の _確認待ち/ フォルダに移動されます。

対応の流れ

  1. スプレッドシートで確認フラグが立っている行を確認
  2. 「ファイルリンク」列から原本PDFを開く
  3. OCR結果と原本を突き合わせて、必要なセルを手動修正
  4. 確認フラグ列を手動で空にする(修正済みの目印)
  5. Drive上の_確認待ち/のファイルは原本として残しておく

5. Drive運用ルール

注意: Drive上のファイルを 削除・移動・リネーム しないでください。 重複検知用のハッシュは「処理済み一覧」で管理しているので、ファイル削除しても重複扱いされ続けます。 どうしても消したい場合は、Apps Script の Properties から該当ハッシュも削除する必要があります。

6. トリガー再実行・手動実行手順

普段の運用

1時間ごとに自動実行されているので、通常は何もしなくてOK。

今すぐ処理したいとき(手動実行)

  1. Apps Script Editor(receipt-ocr-gas)を開く
  2. 左上の関数選択ドロップダウンから runOnceCompletionReports を選ぶ
  3. 「▶ 実行」ボタンを押す
  4. 実行ログに処理件数が出れば成功

トリガーが止まっている疑いがあるとき

  1. Apps Script Editor で左メニューの「⏰ トリガー」を開く
  2. processNewCompletionReports が「1時間ごと」で登録されているか確認
  3. なければ createCompletionReportTrigger 関数を1回実行

7. よくあるトラブルと対処

症状原因の候補対処
業者から投稿したと連絡があったがスプレッドシートに反映されない ① 1時間トリガー未到達 ② Driveに保存されていない ① Drive直下に該当ファイルが見えるか確認 → 見えれば runOnceCompletionReports 手動実行
② 見えなければ業者に再投稿依頼
確認フラグに「Gemini API失敗」 API課金/クォータ切れ・一時的なAPIエラー Google Cloud Console の課金状況確認。Tier1 prepay 残高を補充。その後 runOnceCompletionReports 再実行
同じ業者から複数件投稿があるが1件しか反映されない 1つのPDFに複数の完了届が入っていた 業者に「1完了届=1PDFで再投稿」を依頼
業者名が読み取れていない(空欄) OCR精度の問題(手書き等) 原本確認の上、手動で列を埋めて確認フラグをクリア
金額が合わない(小計+消費税≠合計) OCR誤読 or 元PDFの記載ミス 原本確認の上、正しい金額に手動修正
業者投稿フォームのURLが「サービスを利用できません」 Apps Script デプロイの「アクセス: 全員」設定がリセットされた inagi-form-upload-gas の Editor → 「デプロイを管理」→ 鉛筆編集 → アクセス「全員」に再設定

8. メンテナンス・更新

業者投稿フォームのコードを更新する場合

URLを変えずに本番版を上書き更新するコマンド:

cd ~/kenken-tools/inagi-form-upload-gas
npx @google/clasp@2.5.0 push --force
npx @google/clasp@2.5.0 deploy \
  --deploymentId AKfycbxzZXeqkO7vFfz8Cupj-KeYMksihULkLpRUh0tZ1F8uL1YP6BUMntue7COLLYb9Qb71xg \
  --description "v3 ..."
--deploymentId を既存IDで指定すれば URL不変で本番版を上書き できます(業者に再案内不要)。

OCR本体(receipt-ocr-gas)のコードを更新する場合

cd ~/kenken-tools/receipt-ocr-gas
npx @google/clasp@2.5.0 push --force

こちらはトリガー実行型なのでデプロイ不要。

9. 関連リンク