はじめに
昨今、さまざまな業務において、ChatGPTやGeminiなど、生成AIを活用する機会が増えてきています。
たとえば、会議の内容やメール内容を生成AIを通じて情報を要約できれば、内容確認の時間短縮による業務の効率化を行うことが可能です。
今回はGoogle Apps Script(GAS)を使ってGmailのメールをGeminiで要約して定期的にkintoneアプリに登録し、顧客リストアプリと連携して顧客からの要約されたメール内容が確認できるサンプルプログラムを作成します。
完成イメージ
Gmailで受け取った顧客からのメールのメッセージ内容をGoogle Geminiを介して要約し、kintoneのメール管理アプリに登録します。
顧客リストアプリに登録されたメールアドレスの関連レコードとして要約されたメッセージ一覧が表示されます。
事前に必要なもの
- Googleアカウント
- kintoneアカウント
- 一年間無料の開発者環境を取得できます。
詳細は kintone開発者ライセンス(開発環境) を確認してください。
- 一年間無料の開発者環境を取得できます。
開発の流れ
- メール管理アプリの作成
- 顧客リストアプリの作成
- Gmailラベルの作成
- Gemini APIキーの作成
- Google Apps Scriptによるプログラムの作成
以上の手順で開発していきます。
メール管理アプリの作成
Step 1
kintoneのアプリ作成画面より、「はじめから作成」を選択し、以下の画像を参考にフィールドを追加します。
| フィールドの種類 | フィールド名 | フィールドコード | 備考 |
|---|---|---|---|
| 日時 | 受信日時 | Received_datetime | レコード登録時の日時を初期値にする |
| リンク | 差出人 | sender_email | 入力値の種類:メールアドレス |
| 文字列(1行) | 件名 | subject | |
| 文字列(複数行) | 本文(全文) | body | |
| 文字列(複数行) | 本文(要約) | body_summary |
フォームの作成が終わったら、「フォームを保存」ボタンをクリックして変更を保存します。
Step 2
次にアプリの「設定」タブより、「APIトークン」を選択します。
「APIトークン」設定画面より、「生成する」ボタンをクリックし、「アクセス権」に「レコード追加」をチェックして「保存」します。
アプリの設定画面に戻ったら、「アプリを公開」をクリックして、設定をアプリに反映します。
以上で、「メール管理」アプリの完成です。
顧客リストアプリの作成
Step 1
kintoneアプリストアより、「アプリストア検索」に「顧客リスト」と入力してアプリを検索します。
表示された「顧客リスト」アプリから「このアプリを追加」ボタンをクリックしてインストールします。
アプリの設定画面を開き、「フォーム」タブで、画面のように「関連レコード一覧」フィールドを追加して、「フォームを保存」します。
| 項目 | 設定値 |
|---|---|
| 参照するアプリ | メール管理 |
| 表示するレコードの条件 | メールアドレス=(等しい)差出人 |
| 表示するフィールド | 受信日時、件名、本文(要約) |
| レコードのソート | 受信日時、降順 |
変更が終わったら、「アプリを更新」ボタンをクリックして変更をアプリに反映します。
以上で、「顧客リスト」アプリの設定は完了です。
Gmailラベルの作成
使用するGmailのアカウントにログインし、「ラベル」横の「+」サインをクリックします。
ラベル名に「処理済み」と入力し、「作成」ボタンをクリックします。
「処理済み」のラベルが作成されたことを確認します。
Gemini APIキーの作成
Google AI Studio
のAPI設置画面を開きます。
「APIキーを作成」をクリックします。
「新しいキーを作成する」画面にて、APIキー名を入力し、「プロジェクトを作成」をクリックします。
「新しいプロジェクトを作成」する画面にて、プロジェクト名を入力し、「プロジェクトを作成」をクリックします。
次に「新しいキーを作成する」画面にて、「キーを作成」をクリックします。
新しいキーが作成されましたので、リンクをクリックして詳細を確認します。
APIキーの情報が表示されますので、後述する「Google Apps Scriptによるプログラムの作成」にて使用します。
Google Apps Scriptによるプログラムの作成
Step 1
Google Apps Script
のサイトへ移動し、「新しいプロジェクト」をクリックします。
以下の画面が開くので、任意のプロジェクト名、ファイル名を入力します。
Step 2
プロジェクトの設定ボタンをクリックして、設定画面から「スクリプトプロパティを追加」をクリックします。
以下のプロパティを設定します。
| プロパティ名 | 値 |
|---|---|
| gemini_api_key | {Gemini APIキーの値} |
| gemini_end_point | {Gemini APIエンドポイントURL} |
| kintone_app_id | {kintoneアプリID} |
| kintone_token | {kintone APIトークン} |
| kintone_api_url | https://{kintoneサブドメイン}.cybozu.com/k/v1/records.json |
{Gemini APIキーの値}には、上記
「Gemini APIキーの作成」
で生成したAPIキーを入力してください。
{Gemini APIエンドポイントURL}には、Gemini APIのサービスエンドポイントのURLを指定します。
詳細は
API リファレンス
を参照してください。
今回は、https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContentを使用しています。
{kintoneアプリID}には、作成したkintoneメール管理アプリのIDを入力します。(次のような画面から確認できます)
{kintone APIトークン}には、上記
「メール管理kintoneアプリの作成」-「Step2」
で生成したAPIトークンを入力します。
{kintoneサブドメイン}には、お使いのkintoneのサブドメイン名を入力してください。(https://example.cybozu.com/の場合、サブドメイン名はexampleです)
Step 3
右のメニューの「エディタ」をクリックしてスクリプトエディタを開きます。
下記を参考にコーディングします。
|
|
コーディング終了後、保存します。
解説
スクリプトパラメーターの値の取得
以下のAPI関数で、各スクリプトパラメーターの値を取得します。
PropertiesService.getScriptProperties()
|
|
Gmailメッセージの取得
Gmailに届いた「処理済み」ラベルのないスレッドを検索、取得します。
以下のAPI関数で、「処理済み」のラベル名を取得します。
GmailApp.getUserLabelByName('処理済み')
|
|
以下のAPI関数で、「処理済み」でない(-label:{ラベル名})、件名に「Form Record Added - CONTACT」(subject:{件名のテキスト})が含まれるメッセージのスレッドを検索します。
注:subject:{件名のテキスト}を指定しない場合、「処理済み」ラベルのないすべてのメッセージが検索結果の対象になります。未読のメッセージのみを対象にしたい場合には、is:unreadを追加設定してください。
GmailApp.search('-label:処理済み subject:Form Record Added - CONTACT')
|
|
検索結果より、Gmailの各スレッドのメッセージの内容を所得し、kintoneメール管理アプリのリクエストデータ形式に各値を設定します。 kintoneへ送信するリクエストデータのJSON形式の詳細は 複数のレコードを登録する を参照してください。
|
|
また、以下のAPI関数で「処理済み」のラベルをスレッドに設定します。
threads[i].addLabel(label)
|
|
Geminiでメッセージを要約
以下のデータ形式でリクエストのデータを設定します。上記で取得したメッセージの内容を「3行以内に要約」するように指示しています。
|
|
以下のようにヘッダーに上記で取得したGoogle APIキーを設定します。
また、APIリクエストの送信データを「payload」キーの値として設定します。
|
|
以下の関数で、Gemini APIにリクエストを送信します。
const response = UrlFetchApp.fetch(gemini_end_point, options);
|
|
Gemini APIの関数の詳細については、
「Gemini API ドキュメント」-「テキスト生成」
を参照してください。
kintoneへデータを送信
上記で作成したkintoneアプリの情報を設定します。
|
|
次のAPI関数でkintoneへデータを送信します。
UrlFetchApp.fetch(subdomain, options);
|
|
次の形式でレスポンスが返ってくれば成功です。
{"ids":["レコードID"],"revisions":["リビジョン番号"]}
|
|
Step 4
トリガーの設定画面を表示し、[トリガーを追加]からトリガーを追加します。
イベント発生時に実行する関数には上記で作成したGAS関数、イベントのソースには「時間主導型」、時間ベースのトリガーのタイプには「分ベースのタイマー」、時間の間隔には「10分おき」を設定し、保存します。
以上でGoogle Apps Scriptの設定は完了です。
動作確認
Apps Scriptの編集画面より、「実行する関数」に「summarizeGmailMessages」を選択し、「実行」ボタンをクリックします。
実行後、Gmailのメッセージレコードがkintoneに登録されているか確認します。
また、10分おきにプログラムが実行されているか「実行数」で確認できます。
また、上記で作成した「顧客リスト」アプリにメールアドレスで連携したメッセージ情報が表示されているか確認します。
関連レコード一覧に顧客のメールアドレス宛のメッセージが表示されていれば動作確認完了です。
まとめ
Google Apps ScriptでGemini APIを呼び出し、メール内容を要約してkintoneアプリに登録すれば、顧客から受け取ったメール履歴の内容を簡単にチェックできます。
また、今回利用したテキストの要約以外にも「画像」、「動画」、「ドキュメント」、「音声」などを処理できるモデルも用意されていますので、用途に応じて応用してみてください。
参照サイト
-
Google Gmail APIリファレンス
https://developers.google.com/workspace/gmail/api/reference/rest?hl=ja -
Google Gemini APIリファレンス
https://ai.google.dev/api?hl=ja
このTipsは、2025年12月版kintoneで動作を確認しています。
