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_requesthttps://www.googleapis.com/auth/chat.spaceshttps://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と連携させてダイレクトメッセージ送信をやってみたいと思います。

