Google Chat APIを使ってダイレクトメッセージを送信してみた
はじめに
弊社ではGoogle Workspaceを導入しており、社内でのコミュニケーションチャットツールとしてGoogle Chatが主に使用されています。
そして、2023年7月からGoogle Chat APIのバージョンアップにより、機能が大幅に増えたことで、スペースを作成しメンバーを追加したり、1対1のダイレクトメッセージを送信できるようにになりました。
今回はその新機能である1対1のダイレクトメッセージ送信をやってみたのでご紹介します。
準備
1. Google Cloudプロジェクトを作成
APIを使用するには、Google Cloudプロジェクトが必要なので、まず初めに、Cloudプロジェクトを新規作成します。
そして、後ほど「プロジェクト番号」が必要になるので、ダッシュボード→プロジェクト情報から記録しておきます。
2. Google Chat APIの有効化
APIライブラリから「Google Chat API」を有効にします。
3. OAuth同意画面の構成
OAuth同意画面から、以下の情報を入力していきます。
- OAuth同意画面
- User Type
- 今回は社内用なので「内部」を選択
- アプリ情報
- アプリ名:適当なアプリ名を入力
- ユーザーサポートメール
- 自分のメールアドレスを入力
- アプリのロゴ
- 空欄でOK
- アプリのドメイン
- 空欄でOK
- 承認済みドメイン
- 空欄でOK
- デベロッパーの連絡先情報
- 自分のメールアドレスを入力
- スコープ
- 空欄でOK
以上でOAuth同意画面の設定は終了です。
4. Google Chat APIの設定
有効なAPIとサービスの一覧から、有効化した「Google Chat API」を選択します。そして「構成」タブから情報を入力していきます。
- アプリケーション情報
- アプリ名
- 適当なアプリ名を入力(下記画像では「アプリ名」として表示)
- アプリ名を変更したい場合は、アプリ名を変更した後にChatアプリの再起動をすれば反映されますが、過去のメッセージにも全て反映されます
- アプリ名
- アバターのURL
- アプリのアバター画像。正方形(アスペクト比 1:1)のPNG画像をホストするHTTPS URLを指定
- 説明
- アプリの説明文を入力
- インタラクティブ機能
- 「無効」を選択
- ログ
- 「エラーをLoggingに記録する」にチェック
最後に保存ボタンを押します。
5. Google Apps Scriptの設定
まずは、Google Apps Script(GAS)をスタンドアロン型で新規作成します。そして、左メニュー欄の「プロジェクトの設定」から下記2つの設定を行っていきます。
- 「appsscript.json」マニフェストファイルをエディタで表示する、にチェックを入れます
- appsscript.jsonにはGoogle Chat APIを使用するために必要となる以下の3つのスコープを追加
https://www.googleapis.com/auth/script.external_request
https://www.googleapis.com/auth/chat.spaces
https://www.googleapis.com/auth/chat.messages.create
{ "timeZone": "Asia/Tokyo", "dependencies": {}, "exceptionLogging": "STACKDRIVER", "oauthScopes": [ "https://www.googleapis.com/auth/script.external_request", "https://www.googleapis.com/auth/chat.spaces", "https://www.googleapis.com/auth/chat.messages.create" ], "runtimeVersion": "V8" }
- Google Cloud Platform(GCP)プロジェクトを設定
- 準備1で記録しておいた「プロジェクト番号」を入力し、GASプロジェクトとGCPプロジェクトの連携を行います
ダイレクトメッセージを送ってみる
ここまでの準備ができたら、実際にダイレクトメッセージを送信してみます。
ただし、今回の検証において自分宛にはダイレクトメッセージを送信することはできないため、受信側と送信側として2つGoogleアカウントを使用して下さい。
GASのスクリプトエディターには次のコードを記述します。
/** * Google Chat にダイレクトメッセージを送信する関数 */ function sendDirectMessage() { // 送信先のGoogleメールアドレスとメッセージ内容を定数として定義 const EMAIL = '<送信先のGoogleメールアドレス>'; const MESSAGE_TEXT = '<メッセージ内容>'; const CHAT_API_URL = 'https://chat.googleapis.com/v1/'; // OAuthトークンの取得 const token = ScriptApp.getOAuthToken(); // ダイレクトメッセージのスペースを設定するためのペイロード const setupPayload = { space: { spaceType: 'DIRECT_MESSAGE', // ダイレクトメッセージ用のスペースタイプを指定 singleUserBotDm: false // ボットとの1対1のダイレクトメッセージではないため、falseを設定 }, memberships: [{ member: { name: 'users/' + EMAIL, // 送信先のユーザーを指定 type: 'HUMAN' // 送信先のユーザータイプは人間 } }] }; // APIリクエストのオプションを定義 const requestOptions = { method: 'post', headers: { 'Authorization': `Bearer ${token}` }, contentType: 'application/json', payload: JSON.stringify(setupPayload) }; // スペース設定のAPIを呼び出し const spaceResponse = UrlFetchApp.fetch(CHAT_API_URL + 'spaces:setup', requestOptions).getContentText(); const spaceName = JSON.parse(spaceResponse).name; // メッセージ送信のペイロードを定義 const messagePayload = { text: MESSAGE_TEXT // 送信するメッセージの内容 }; requestOptions.payload = JSON.stringify(messagePayload); // メッセージ送信のAPIを呼び出し UrlFetchApp.fetch(CHAT_API_URL + spaceName + '/messages', requestOptions); }
最後に、「sendDirectMessage」を実行します。
※初回実行時は権限付与を許可するか尋ねられるので、許可ボタンを押して下さい。
実行が完了すると、Google Chatアプリ上でダイレクトメッセージが送信されていることを確認できます。
まとめ
今回はGoogle Chat APIの新機能である1対1のダイレクトメッセージ送信をやってみました。
今後は、WebアプリやAppSheetと連携させてダイレクトメッセージ送信をやってみたいと思います。