ADVERTISEMENT

【Googleドキュメント】Apps Scriptで文書テンプレートを自動作成したい時の準備

【Googleドキュメント】Apps Scriptで文書テンプレートを自動作成したい時の準備
🛡️ 超解決

Googleドキュメントで繰り返し使う書類のテンプレートを、Google Apps Scriptを使って自動作成したいと考えている方は少なくありません。手動でコピーして修正する手間を省き、一定のフォーマットで素早く文書を生成できるようになります。しかし、会社のGoogle Workspace環境ではセキュリティや権限の制限により、Scriptの実行がブロックされるケースがあります。この記事では、Apps Scriptを利用したテンプレート自動作成のための準備手順と、事前に確認すべきポイントを解説します。

【要点】この記事で確認すること

  • 最初に見る場所: Google Workspace管理コンソールの「Apps Script」と「Googleドキュメント」のサービス設定、および自身のGoogleアカウントの権限
  • 切り分けの軸: 端末側のブラウザやネットワークの問題、アカウント側のライセンスや2段階認証の状態、管理設定側のスクリプト実行の許可
  • 注意点: 会社のGoogle Workspaceでは管理者がスクリプトの実行を制限している場合があり、権限のないアプリへのアクセス許可は慎重に行う必要があります。また、機密情報を含むテンプレートを扱う場合は、アクセス権や共有設定を見直しましょう。

ADVERTISEMENT

Google Apps Scriptでテンプレートを自動作成するメリットと準備の全体像

Google Apps Script(GAS)は、Google Workspaceの各サービスを操作できるスクリプト言語です。ドキュメント、スプレッドシート、Gmailなどを連携させて、定型業務を自動化できます。テンプレートの自動作成では、あらかじめ作成したGoogleドキュメント内にプレースホルダー({名前}、{日付}など)を埋め込み、スクリプトで値を置き換えて新しい文書を生成します。これにより、毎回手動でコピー&ペーストする必要がなくなり、ミスも減ります。

準備の全体像は以下の通りです。まず、テンプレートとなるGoogleドキュメントを作成します。次に、Apps Scriptプロジェクトを作成し、テンプレートを読み込んで新しい文書を生成するコードを記述します。最後に、トリガーを設定して定期的に実行するか、ボタンやメニューから手動で実行できるようにします。ただし、会社の環境ではスクリプトの実行制限や権限の管理がネックになることが多いため、管理者の設定を事前に確認することが重要です。

事前に確認すべきGoogle Workspaceの設定と管理者権限

会社のGoogle Workspaceでは、セキュリティポリシーによってApps Scriptの利用が制限されている場合があります。管理者が管理コンソールでスクリプトの実行を許可していないと、スクリプトを実行しようとしたときにエラーが発生します。ここでは確認すべきポイントを説明します。

Google Apps Scriptが利用できるエディション

Google Apps Scriptは、Business Starter、Business Standard、Business Plus、Enterprise Essentials、Enterprise Plusなど、ほとんどのGoogle Workspaceエディションで利用できます。ただし、無料のGoogleアカウント(個人向け)でも技術的には使えますが、会社で使用する場合はライセンスの種類を確認しましょう。特に、Business Starterでは一部の高度な機能が制限されることがありますが、基本的なスクリプト実行は可能です。

スクリプト実行に必要な権限

Apps Scriptを実行するには、Googleドキュメントへのアクセス権(閲覧・編集)と、スクリプトが利用するAPIのスコープに対する承認が必要です。初回実行時に、権限を要求するダイアログが表示されます。会社のポリシーで「信頼されていないアプリ」の許可が禁止されている場合、承認画面でブロックされることがあります。管理者が管理コンソールの「アプリと拡張機能」→「Apps Script」で、ドメイン内のユーザーによるスクリプト実行を許可しているか確認してください。また、スクリプトがGoogleドキュメント以外のサービス(スプレッドシート、Gmailなど)にアクセスする場合、それぞれのスコープも承認が必要です。

テンプレート用Googleドキュメントの準備と構造

テンプレートとなるドキュメントは、スクリプトが読み取り可能な形式でプレースホルダーを含んでいる必要があります。プレースホルダーは、スクリプトで置き換えたい部分に置くマークです。たとえば、{顧客名}{案件番号}{日付}などです。プレースホルダーは、ドキュメント内の本文だけでなく、ヘッダー、フッター、表の中にも配置できます。

プレースホルダーの挿入方法

プレースホルダーは、単純な文字列としてドキュメントに直接入力します。特別な書式は必要ありませんが、置き換え漏れを防ぐために、すべてのプレースホルダーを統一したパターン(例:{{顧客名}}など)で記載することをおすすめします。スクリプトでは、正規表現を使ってこのパターンを検索し、実際の値に置き換えます。

テンプレートファイルの保存場所

テンプレートファイルは、スクリプトからアクセスできる場所に保存する必要があります。原則として、自分のGoogleドライブ(マイドライブ)か、共有ドライブ内のフォルダに置きます。ただし、共有ドライブの場合は、スクリプトを実行するユーザーがそのドライブに対して書き込み権限を持っている必要があります。また、テンプレートファイル自体は編集を防ぐために「閲覧のみ」で共有するか、スクリプトでコピーを作成してから置き換えを行うと安全です。

Apps Scriptプロジェクトの作成と基本コードの記述

スクリプトプロジェクトは、Googleドキュメントの「拡張機能」→「Apps Script」から作成するか、独立したスクリプトとしてGoogleドライブ上に作成できます。テンプレートを自動作成するためには、以下の手順でコードを記述します。

  1. テンプレート用のGoogleドキュメントを開き、「拡張機能」→「Apps Script」をクリックしてスクリプトエディタを開きます。
  2. スクリプトエディタが開いたら、デフォルトのコード(function myFunction() { })を削除し、テンプレートを操作する関数を記述します。
  3. テンプレートファイルのIDを取得します。ファイルIDは、テンプレートドキュメントのURLに含まれる /d//edit の間の英数字の文字列です。
  4. スクリプト内で DocumentApp.openById('ファイルID') を使ってテンプレートを開き、getBody() で本文を取得します。
  5. body.replaceText('{プレースホルダー}', '置き換え値') を使ってプレースホルダーを実際の値に置き換えます。
  6. 置き換えが完了したら、DocumentApp.create('新しい文書のタイトル') で新規ドキュメントを作成し、テンプレートの内容をコピーして書き込みます。
  7. 必要に応じて、新しいドキュメントを特定のフォルダに移動するコードも追加します。

コードの詳細例を以下に示します。

注意点として、テンプレート内に画像や表が含まれている場合、replaceText では文字列のみ置き換え可能です。表のセル内のテキストも置き換えられますが、画像の置き換えには別の処理が必要です。

トリガー設定による自動実行の準備

スクリプトを手動で実行するだけでなく、特定のイベントをトリガーにして自動実行させることができます。たとえば、スプレッドシートのフォーム送信時や、特定の時間になったらテンプレートを生成するように設定できます。ただし、トリガーを使うにはスクリプトの権限が適切に設定されている必要があります。

実行方法 メリット デメリット
手動実行(スクリプトエディタから実行) テストが簡単、エラー発生時にすぐ対応できる 自動化できない、毎回手動で実行する手間がかかる
時間主導型トリガー 定期的に自動実行できる(毎日、毎週など) 実行時間が固定される、時差や休日の考慮が必要
イベントトリガー(フォーム送信など) 特定のアクションをきっかけに実行できる トリガーの設定が複雑、権限の承認が必要

トリガーを設定するには、スクリプトエディタの左側のメニューから「トリガー」をクリックし、「トリガーを追加」から条件を指定します。初めてトリガーを追加するときは、権限の承認が必要です。会社の環境では、トリガーの使用が管理者によって制限されている場合もあるので、事前に確認してください。

よくある失敗パターンとトラブルシューティング

実際にApps Scriptでテンプレートを作成しようとしたときに、以下のような失敗パターンが報告されています。

  • スクリプト実行時に「権限が不足しています」と表示される。 原因は、スクリプトが必要とするスコープが承認されていないか、管理者がスクリプトの実行を禁止している可能性があります。まずは、スクリプトエディタの「実行」→「権限を確認」から承認を試みてください。それでも失敗する場合は、管理者に問い合わせて、管理コンソールの設定を確認してもらいましょう。
  • テンプレートのプレースホルダーが置き換わらない。 プレースホルダーの表記がスクリプト内のパターンと一致していない可能性があります。たとえば、テンプレートに {名前} と書いているのに、スクリプトで {{名前}} を検索していると置き換わりません。また、スペースの有無や全角半角も注意してください。
  • 新しいドキュメントが空で作成される。 テンプレートの内容をコピーする前に、新しいドキュメントにテンプレートの内容を正しくコピーできていない可能性があります。コード内で body.copy() を使って本文をコピーし、それを新しいドキュメントに設定する処理を確認してください。
  • スクリプトが途中でタイムアウトする。 Apps Scriptの実行時間には6分の制限があります。大量のテンプレートを一度に処理しようとするとタイムアウトすることがあります。処理を分割するか、実行時間を短縮する工夫が必要です。
  • トリガーが正しく動作しない。 トリガー設定後、権限の再承認が必要な場合があります。また、トリガーを設定したユーザーが退職したり、アカウントが無効になるとトリガーも停止します。定期的にトリガーの状態を確認しましょう。

管理者に確認すべき情報と連絡時のポイント

会社のGoogle Workspace管理者に連絡する際は、以下の情報を伝えるとスムーズです。

  • 自分が使っているGoogle Workspaceのエディション(Business Standardなど)
  • 実行したいスクリプトの概要(何を目的とし、どのサービスにアクセスするか)
  • 発生しているエラーメッセージのスクリーンショット
  • 管理コンソールで確認してほしい項目:「アプリ」→「Google Workspace」→「ドライブとドキュメント」→「Apps Script」の設定で、スクリプトの実行が許可されているか、特定のスコープがブロックされていないか
  • トリガーを使用する場合は、トリガーの許可設定も確認してもらう必要があります

また、管理者がスクリプトの実行を許可したとしても、組織のセキュリティポリシーにより、特定のユーザーだけに許可を与えることも可能です。その場合は、自分のアカウントが対象になっているか確認しましょう。

よくある質問

Q1. テンプレート内に画像がある場合、スクリプトで置き換えできますか?
A. 画像の置き換えは、replaceText ではできません。画像を削除して新しい画像を挿入するには、getBody().getImages() で画像オブジェクトを取得し、insertImage などのメソッドを使用します。ただし、位置の調整が難しいため、あらかじめ画像を配置しないテンプレートにするか、画像は後から手動で挿入するほうが簡単です。

Q2. スクリプトを他の人と共有して使うことはできますか?
A. スクリプトプロジェクトを共有すると、他のユーザーも実行できます。ただし、各ユーザーが初回実行時に権限の承認を行う必要があります。また、スクリプトがアクセスするテンプレートや生成先のフォルダの共有設定も適切に行ってください。

Q3. テンプレートが100種類以上ある場合、1つのスクリプトで管理できますか?
A. 可能です。テンプレートファイルのIDを配列で管理し、ループ処理で各テンプレートを処理するようにコードを書けます。ただし、実行時間制限に注意し、必要に応じて処理を分割するか、トリガーを複数設定してください。

Q4. スクリプトを実行すると「このアプリは確認されていません」と表示されます。
A. これは、Googleが発行するOAuth同意画面が未承認のアプリとして扱われているためです。個人利用であれば「詳細」→「安全ではないページに移動」で進めますが、会社の環境では管理者が承認しない限り実行できない場合があります。管理者に依頼して、内部アプリとして承認してもらうと表示されなくなります。

まとめ

Google Apps Scriptを使って文書テンプレートを自動作成するためには、テンプレートの準備、スクリプトの記述、権限の確認、トリガーの設定が必要です。特に会社のGoogle Workspace環境では、管理者による設定がスクリプト実行の可否を左右します。まずは、管理コンソールでのApps Script許可状況を確認し、必要な権限を申請してください。うまく動作すれば、定型文書の作成業務を大幅に効率化できます。この記事の手順を参考に、準備を進めてみてください。

ADVERTISEMENT

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

超解決 第一編集部

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

ADVERTISEMENT