ADVERTISEMENT

【Googleドキュメント】出張報告書テンプレ!経費精算とDriveバックアップの連動

【Googleドキュメント】出張報告書テンプレ!経費精算とDriveバックアップの連動
🛡️ 超解決

出張報告書を毎回手書きで作成していませんか。経費精算と二重入力していると、時間がかかるうえにミスが発生しやすいものです。また、報告書のデータが散逸してしまうリスクも無視できません。この記事では、Googleドキュメントのテンプレート機能とApps Scriptを組み合わせて、出張報告書の作成から経費精算、Driveバックアップまでを自動連動する方法を解説します。

【要点】出張報告書テンプレートの作成から経費精算・バックアップ自動化までの流れ

  • テンプレートギャラリーの利用: 統一フォーマットの報告書を簡単に複製でき、記入漏れを防止します。
  • Apps Scriptによる自動転記: ドキュメント内の経費データをスプレッドシートに自動で反映し、集計作業を省力化します。
  • スクリプトの定期実行とバックアップ: ドキュメントのコピーを指定フォルダに自動保存し、データ消失を防ぎます。

ADVERTISEMENT

出張報告書テンプレートと自動化の仕組み

出張報告書の作成を効率化するには、まず定型フォーマットをテンプレート化します。Googleドキュメントには標準のテンプレートギャラリーがありますが、ここに自社専用の報告書を追加することも可能です。テンプレートから複製されたドキュメントにユーザーが記入した後、Apps Scriptを使って経費データをスプレッドシートに転記し、同時にドキュメントのコピーをバックアップフォルダに保存します。これにより、手入力の手間とミスが減り、データの一元管理が実現します。

必要なものはGoogleアカウントのみです。Apps Scriptの知識が少し必要ですが、サンプルコードをそのまま使えば初心者でも設定できます。この仕組みを導入すると、毎回の報告書作成時間が半分以下になり、経費精算もリアルタイムで把握できるようになります。

出張報告書テンプレートの作成手順

まず、Googleドキュメントで出張報告書のフォーマットを作成します。以下の項目を含むように設計しましょう。

  1. 新規ドキュメントを作成する
    Googleドライブで「新規」→「Googleドキュメント」をクリックし、白紙のドキュメントを開きます。
  2. 報告書の項目をレイアウトする
    出張日、氏名、目的地、目的、交通費、宿泊費、日当などを表形式で入力します。表は「挿入」→「表」から好きなサイズを選べます。
    例:1行目に「項目」「金額」「備考」、2行目以降に「交通費」「宿泊費」など。
  3. テンプレートとして保存する
    完成したドキュメントのタイトルを「出張報告書テンプレート」などに変更し、URLを控えておきます。テンプレートとして共有するには、ドキュメントを開いた状態で「共有」→「リンクを知っている全員」に設定し、書き込みは編集者に制限します。

テンプレートは直接編集しないように注意してください。利用者はテンプレートをコピーして使うことで、元のフォーマットが変更されるのを防げます。

経費精算スプレッドシートの準備

経費データを蓄積するためのスプレッドシートを作成します。以下の手順で行います。

  1. 新しいスプレッドシートを作成する
    Googleドライブで「新規」→「Googleスプレッドシート」を選択し、ファイル名を「経費精算管理」とします。
  2. 列見出しを設定する
    1行目に「報告書ID」「出張日」「氏名」「交通費」「宿泊費」「日当」「合計」「バックアップURL」など、必要な項目を入力します。
  3. スクリプト用のIDを控える
    スプレッドシートのURLからスプレッドシートID(d/と/editの間の文字列)をメモします。また、シート名も確認しておきます(デフォルトは「シート1」)。

このスプレッドシートが、後でApps Scriptからデータを受け取る格納庫になります。

ADVERTISEMENT

Apps Scriptで自動転記とバックアップを設定する

ここが核心です。Googleドキュメントのスクリプトエディタを使って、報告書の内容をスプレッドシートに自動転記し、同時にドキュメントのコピーをバックアップフォルダに保存するコードを実装します。

スクリプトエディタを開く

  1. テンプレートドキュメントを開く
    先ほど作成した出張報告書テンプレートを開きます。
  2. 拡張機能メニューからApps Scriptを起動する
    「拡張機能」→「Apps Script」をクリックし、新しいスクリプトプロジェクトを作成します。

スクリプトコードを記述する

以下のコードをコピーして、スクリプトエディタに貼り付けます。ただし、SPREADSHEET_IDFOLDER_IDはご自身の環境に合わせて変更してください。

function processReport() {
  // 設定(各自書き換えてください)
  var SPREADSHEET_ID = 'あなたのスプレッドシートID';
  var SHEET_NAME = 'シート1';
  var FOLDER_ID = 'あなたのバックアップフォルダID';
  var TEMPLATE_DOC_ID = 'あなたのテンプレートドキュメントID';
  
  // テンプレートをコピーして新しい報告書を作成(実際の運用ではフォームなどでトリガー)
  // この例では、現在開いているドキュメントを処理対象とします
  var doc = DocumentApp.getActiveDocument();
  var body = doc.getBody();
  
  // テーブル(経費データ)を取得
  var tables = body.getTables();
  if (tables.length == 0) {
    Logger.log('テーブルが見つかりません');
    return;
  }
  var table = tables[0];
  var rows = table.getNumRows();
  
  // スプレッドシートに書き込むデータを準備
  var date = ''; // 出張日はドキュメントのどこかにテキストとしてあると仮定
  var name = '';
  // 実際はテーブル外のパラグラフから抽出するか、テーブルの特定セルに配置
  // 簡単のため、テーブル2行目以降から経費項目を読み取る
  var expenseData = [];
  for (var i = 2; i < rows; i++) {
    var row = table.getRow(i);
    var cell0 = row.getCell(0).getText();
    var cell1 = row.getCell(1).getText();
    var cell2 = row.getCell(2).getText();
    expenseData.push([cell0, cell1, cell2]);
  }
  
  // スプレッドシートに追記
  var ss = SpreadsheetApp.openById(SPREADSHEET_ID);
  var sheet = ss.getSheetByName(SHEET_NAME);
  var lastRow = sheet.getLastRow();
  var newRow = lastRow + 1;
  // 見出しを除いて転記(例として経費の合計だけでも可)
  // ここでは簡略化のため、最初の経費行を書き込み
  if (expenseData.length > 0) {
    sheet.getRange(newRow, 1, 1, expenseData[0].length).setValues([expenseData[0]]);
  }
  
  // バックアップ:ドキュメントのコピーを指定フォルダに保存
  var folder = DriveApp.getFolderById(FOLDER_ID);
  var copy = doc.makeCopy('出張報告書_' + new Date().toISOString().slice(0,10), folder);
  Logger.log('バックアップ完了: ' + copy.getUrl());
}

上記コードはあくまでサンプルです。実際の運用では、テーブルの構造に合わせたデータ抽出ロジックや、エラーハンドリングが必要です。

トリガーを設定して自動実行する

  1. トリガーを追加する
    スクリプトエディタの左メニューから「トリガー」アイコン(時計)をクリックし、「トリガーを追加」を選択します。
  2. イベントを選択する
    「時間主導型」で「時間単位のタイマー」を選び、「1時間ごと」などに設定します。または、ドキュメントが編集されたときに実行したい場合は「ドキュメントのオープン時」なども選べますが、今回はシンプルに時間主導にします。
  3. 関数を指定する
    「実行する関数」に「processReport」を選択し、「保存」します。初回は権限の承認を求められますので、内容を確認して許可してください。

これで、定期的にスクリプトが実行され、開かれているドキュメントの経費データがスプレッドシートに転記され、バックアップコピーが作成されるようになります。より実用的にするには、フォーム送信時に実行するトリガーや、ドキュメント内の特定のキーワードを検出して自動実行するように改良できます。

注意点とよくある失敗例

スクリプトの権限エラーが発生する

初回実行時に「このアプリは確認されていません」という画面が出ることがあります。これはGoogleのセキュリティポリシーによるもので、自分のアカウントであれば「詳細」→「安全でないページに移動」を選択して許可しても問題ありません。ただし、組織の管理者ポリシーによっては制限される場合もあるので、その場合はIT部門に相談してください。

テーブル構造が異なるとデータが正しく取得できない

スクリプトはテーブルの行数やセルの位置に依存します。テンプレートの表を変更した場合、スクリプトも修正する必要があります。対策として、テンプレートの表は固定し、編集者に変更させないように権限設定を行います。

バックアップフォルダの指定を間違える

FOLDER_IDの取得は、目的のフォルダを開いたときのURLの「folders/」以降の文字列です。誤ったIDを指定するとエラーになります。必ず正しいIDをコピーしましょう。

手動管理と自動化の比較

項目 手動管理 自動化(本手法)
報告書作成時間 毎回書式を整える必要があり、1件あたり約15分 テンプレートから5分で作成、記入のみ
経費精算の正確性 転記ミスが発生する可能性がある スクリプトが自動転記するのでミスがほぼなくなる
バックアップの確実性 手動で保存するため忘れることがある 自動で指定フォルダにコピーされるので確実
データ集計 手動でスプレッドシートに転記、集計に時間がかかる スプレッドシートに自動蓄積され、集計が即座に可能

まとめ

この記事では、Googleドキュメントのテンプレートを活用した出張報告書の効率的な作成方法と、Apps Scriptによる経費精算スプレッドシートへの自動転記、Driveバックアップの自動化手順を解説しました。テンプレート化によって記入漏れが減り、スクリプトによる連動で手作業の二重入力とデータ散逸を解消できます。今後は、フォーム送信時にスクリプトが起動するようにトリガーを変更したり、経費データを月次で集計するダッシュボードを作成するなど、さらに発展させることが可能です。まずはテンプレートとサンプルスクリプトをコピーして、ご自身の環境で試してみてください。


ADVERTISEMENT

📄
Googleドキュメントトラブル完全解決データベースこの記事以外にも、書式・共有・Apps Script・引用など様々な困りごとへの解決策をまとめています。逆引きに活用してください。
この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。