はじめに

ChatGPTなどのAIを活用して、文章作成や情報収集は速くなった。
でも、Gmailの返信定型文、スプレッドシートへのコピペといった日々の単純作業は、まだ手付かず…

そんな「あともう一歩」の自動化に役立つのが、Google Apps Script、通称GAS(ガス)です。

GASは、GmailやスプレッドシートといったGoogleのサービスを、プログラムで自由に操作するための開発環境です。

「開発環境」と聞くと難しそうと感じますが、必要なコードは、今やAIが教えてくれます。

この記事では、ChatGPTを用いてGASのコードを生成し、実際の業務を効率化するための一連のプロセスや注意すべきポイント、そして具体的な6つの事例を紹介していきます!

そもそも Google Apps Script(GAS)とは何か?

スプレッドシートやGmail、GoogleカレンダーなどのGoogleサービスをプログラムで操作・連携できます。

GASの主な特徴は以下の通りです。

① 特別な環境準備が不要
専門的な開発環境を自分のPCにインストールする必要はありません。Googleアカウントとインターネット環境があれば、すぐに始められます。

② サーバーの管理が不要
作成したプログラムはGoogleのサーバー上で動作するため、自分でサーバーを契約したり管理したりする必要がありません。

③ 無料で利用可能
基本的な利用は無料です。

GASは、広く使われているプログラミング言語「JavaScript」がベースになっています。


GASで実現可能な業務自動化

GASを使って業務を自動化できる主な例をいくつかご紹介します。

① 定型業務の自動化
毎日・毎週行っている決まった手順の作業を自動化できます。

たとえば、

  • 売上データを集計し、日報や週報の形式でまとめる。

  • すぷ上の顧客リストに基づき、請求書を自動で作成しPDF化する。

  • 指定したフォルダに保存された画像のファイル名を一覧化する。

② サービス間の連携
また、複数のGoogleサービスを繋ぎ合わせる必要がある作業:

  • Googleフォームに問い合わせが送信されたら、その内容をスプレッドシートに転記し、同時に担当者へGmailで通知を送る。

  • Googleカレンダーに新しい予定が登録されたら、その概要をタスク管理用のスプレッドシートに追記する。

③ 外部サービスとの接続
Googleのサービスだけでなく、SlackやChatwork、その他多くの外部サービスと連携することも可能です:

  • スプレッドシートの特定セルが更新されたら、その内容をSlackの特定チャンネルに通知する。

  • AIモデルを利用して、シート上のテキストを自動で翻訳する。


自動化実現までのプロセス概要

この記事では、以下のステップに沿って業務自動化を進めていきます。


セキュリティの考慮と安全なコード生成の準備

GASを使って業務を自動化していく中で、ChatworkやSlack、あるいはAIモデルのAPIなど、外部のサービスと連携する場面が出てきます。

その際に必要となるのが「APIキー」や「アクセストークン」といった機密情報です。

これらの情報をどう扱うかは、安全に自動化を進める上で非常に重要です。この章では、機密情報を安全に管理するための標準的な方法と、それを前提としたコードをChatGPTに生成させる手順を解説します。


APIキーやパスワードをコードに直接書いてはいけない理由

APIキーは、特定のサービスを利用するための「鍵」のようなものです。この鍵があれば、誰でもサービスを操作できてしまいます。

そのため、プログラムのコードの中にAPIキーを直接書き込む(ハードコーディングと呼ばれます)ことには、以下のようなリスクが伴います。


意図しない情報漏洩
コードを他の人に見せたり共有したりした際に、APIキーも一緒に漏れてしまいます。

不正利用のリスク
漏洩したAPIキーが第三者の手に渡ると、あなたのアカウントでサービスを不正に利用されたり、有料サービスの場合は高額な料金が発生したりする可能性があります。

例えば、以下のようなコードは避けるべき記述例です。

function postToChatwork() {
  var token = "abcdef1234567890abcdef1234567890"; // APIトークンを直接記述している
  
  // (ここにChatworkへ投稿する処理が続く)
}

このコードが何らかの形で外部に漏れた場合、APIキーなどの token の値もそのまま第三者に知られてしまいます。


「スクリプトプロパティ」を利用する

こうしたリスクを避けるため、GASには「スクリプトプロパティ」という機能が用意されています。

これは、コードとは別の、安全な場所にデータを保存しておくための仕組みです。

スクリプトプロパティを利用するメリットは以下の通りです。

コードと機密情報を分離できる
APIキーをコード本体に含めずに済むため、コードを安全に共有・管理できます。

管理が容易になる
APIキーが変更になった場合でも、コードを一行も書き換えることなく、プロパティの値だけを更新すれば対応できます。


設定方法

スクリプトエディタの左側メニューから、歯車の形をした「プロジェクトの設定」アイコンをクリックします。

設定画面を一番下までスクロールすると、「スクリプト プロパティ」という項目があります。「スクリプト プロパティを追加」ボタンをクリックします。

入力欄が2つ表示されます。

  • プロパティ: データの名前です。コードからこの名前を指定して値を呼び出します。(例: CHATWORK_API_TOKEN)

  • : 実際のAPIキーやパスワードをここに入力します。

入力したら、「スクリプト プロパティを保存」をクリックします。

これで、APIキーを安全な場所に保管することができました。


スクリプトプロパティを使うコードをChatGPTに生成させる指示方法

本記事の後半ではより具体的に、AIにコードを書いてもらう方法を紹介しますが、AIは、デフォルトではスクリプトプロパティの利用を想定せずにコードを作成してしまう場合があります。

そのため、指示を出す際は「機密情報はスクリプトプロパティから取得すること」と明確に伝えることが重要です。

例えば、次のような内容を指示に含めてみましょう。

スプレッドシートのA1セルの内容を、Chatworkの指定したルームに投稿するGASコードを作成してください。

# 遵守事項
ChatworkのAPIトークンは、スクリプトプロパティから取得してください。プロパティ名は CHATWORK_API_TOKEN とします。
ルームIDもスクリプトプロパティから取得してください。プロパティ名は CHATWORK_ROOM_ID とします。

この指示により、AIは以下のような、スクリプトプロパティを利用した安全なコードを生成してくれるようになります。

function postToChatwork() {
  // 1. スクリプトプロパティからAPIトークンとルームIDを取得
  var properties = PropertiesService.getScriptProperties();
  var token = properties.getProperty("CHATWORK_API_TOKEN");
  var roomId = properties.getProperty("CHATWORK_ROOM_ID");

  // 2. スプレッドシートからメッセージ内容を取得
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var message = sheet.getRange("A1").getValue();

  // (以下、取得した情報を使ってChatworkへ投稿する処理が続く)
}


ChatGPTへの効果的な指示方法

セキュリティに加えて、AIにGASコードの作成を依頼する際に特に押さえていただきたいポイントが二つあります。

① 前提条件の明示:操作対象のシート名やセル番地など、コードが扱う具体的な対象をすべて指定することが重要です。
② 処理の具体化:実行してほしい手順を、箇条書きなどを使い、時系列や条件分岐がわかるように明確に記述しましょう。


プロンプト作成が難しいという方は

ChatGPTに対して、どのようにプロンプトを作成すれば良いか悩まれている方は、下記のシステムプロンプトをGPTsやプロジェクトの指示に使用してみてください。

下記のシステムプロンプトを使用することで、ChatGPTが、GAS作成に必要な項目を逆質問してくれるなどして、ステップバイステップでGASを作成できます。

あなたの役割は、ユーザーの漠然とした要望を、対話を通じて具体的な仕様に落とし込み、その上で安全かつ実用的なGASコードを生成することです。

【最重要】あなたの行動原則:質問ファースト

ユーザーからの依頼は「最初のアイデア」と捉えてください。あなたの最初の仕事はコードを書くことではありません。 完璧な仕様書を完成させるために、不足している情報をヒアリングし、ユーザーの真の目的を明らかにすることです。

以下の対話フローを厳守してください。

ステップ1:受付と逆質問の開始
ユーザーから「〇〇したい」という依頼を受けたら、まず「承知いたしました。その自動化を実現するために、いくつか質問させてください。」と応答を開始します。そして、以下の項目について不足している情報を確認するための質問を、箇条書きなどで分かりやすく投げかけてください。

【ヒアリング項目リスト】

目的の明確化: 「このスクリプトが完成したら、最終的にどのような状態になるのが理想ですか?」

実行のきっかけ(トリガー): 「このスクリプトは、いつ実行したいですか?(例:手動でボタンをクリック、毎日午前9時、フォームが送信された時など)」

操作対象の特定: 「どのGoogleスプレッドシート(またはドキュメント等)を操作しますか? 具体的なシート名や、操作する列(A列、B列など)を教えてください。」

処理の具体的な流れ: 「もう少し詳しく、どのような手順で処理を進めたいですか?(例:1. A列を上から順に見ていき、2. "完了"と書かれていたら、3. その行の色を変える、など)」

外部連携の有無: 「Gmail、Googleカレンダー、Slack、Chatworkなど、他のサービスと連携する必要はありますか?」

機密情報の有無: 「APIキーやパスワードといった、外部に漏れてはいけない情報は使いますか?」(使う可能性がある場合は、スクリプトプロパティの利用を前提とします)

エラー時の挙動: 「もし処理の途中で問題が起きたら、どうなってほしいですか?(例:処理を中断してエラーを記録、管理者にメールで通知など)」

ステップ2:要件の整理と最終確認
ユーザーからの回答が揃ったら、その内容を基に「ありがとうございます。ご要望を以下のように整理しました。この内容で実装を進めてよろしいでしょうか?」と、箇条書きで仕様をまとめて提示し、最終確認を取ってください。これにより、認識のズレを防ぎます。

ステップ3:コード生成
ユーザーから仕様について合意が得られた後、初めてコードの生成を開始します。 コードを生成する際は、以下のルールを必ず守ってください。

セキュリティ: APIキー等の機密情報は、PropertiesService.getScriptProperties() を使って**「スクリプトプロパティ」から取得するコードを標準とします。**

可読性: 関数名や変数名は役割がわかる英語名とし、日本語で処理内容のコメントを必ず記述します。

実用性: try...catch を用いた基本的なエラーハンドリングを標準で組み込みます。

説明の添付: 生成したコードだけでなく、その使い方(実行方法や必要なトリガー設定など)も必ず説明してください。

出力形式: コードは必ず gas と言語指定をしたMarkdownのコードブロックで囲んでください。

例外処理:
もしユーザーが最初から詳細な仕様を提示してきた場合は、ステップ1と2を省略し、その仕様が安全かつ適切かを確認した上で、ステップ3に進んでも構いません。

以上のプロセスに基づき、ユーザーにとって最高のGAS開発パートナーとして振る舞ってください。

プロジェクトで使用する場合:

新しいプロジェクトを作成したら、「指示の追加」をクリックします。

システムプロンプトを貼り付けて、「保存する」をクリックします。