はじめに
Google Chat の Bot から個人宛にメンションを送るには、ユーザーIDを指定する必要があります。
しかし、このユーザーIDはGoogle ChatのUI上では確認できず、取得するにはAPIを利用する必要があり、簡単には確認できません。
本記事では、Google Workspace の Admin SDK Directory API を活用して、Google スプレッドシート上のメールアドレス一覧を基にユーザーIDを一度に取得する方法を解説します。
この記事でわかる・できること
- Admin SDK Directory API を使ったユーザーIDの取得方法がわかる
- ユーザーIDを一度に複数取得できる
この記事の対象者
- Google Chat の Bot を開発している人
- Bot から個人宛にメンションを送りたい人
動作環境・使用するツールや言語
- Google スプレッドシート
- Google Apps Script (GAS)
- Google Workspace Admin SDK Directory API
1. Google Chat のユーザーIDとは?
Google Chat の Bot から個人宛にメンションを送るには、送信メッセージに <users/{userId}>
のような文字列を含める必要があります。
例)<users/123456789012345678901>
このIDはGoogle ChatのUI上では確認できず、APIを利用して取得する必要があります。
2. Admin SDK Directory API を使ったユーザーIDの取得方法
ユーザーIDの取得方法は、こちらのサイトを参考にさせていただきました。
3. メールアドレスの一覧からユーザーIDを一度に取得する方法
3.1 Google スプレッドシート上にメールアドレス一覧を用意する
Google スプレッドシート上に以下のような形式のメールアドレス一覧を作成してください。
A | B | |
---|---|---|
1 | メールアドレス | ユーザーID |
2 | suguru@example.com | |
3 | mayumi@example.com | |
4 | tatsunori@example.com |
3.2 Google スプレッドシートからGoogle Apps Script (GAS)を作成する
メールアドレスのスプレッドシートのメニューから「拡張機能 > App Script」を開いた後、コードエディタに下記のコードを入力してください。
※{メールアドレス一覧のシート名}
の部分は、作成したシート名に変更すること。
function getUserId() {
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
const sheet = spreadsheet.getSheetByName('{メールアドレス一覧のシート名}');
// 1行目は表見出しなので、2行目から処理対象とする
for (let i = 2; i <= sheet.getLastRow(); i++) {
let userId = sheet.getRange(i, 2).getValue() // B列のユーザーIDを取得
// 既にユーザーIDが入力されていた場合は、ユーザーIDを取得しない
if (!userId) {
let email = sheet.getRange(i, 1).getValue(); // A列のメールアドレスを取得
userId = AdminDirectory.Users.get(email, { viewType: 'domain_public' }).id;
sheet.getRange(i, 2).setValue(userId); // 取得したユーザーIDでB列を更新
}
}
}
3.3 サービスにAdminDirectoryを追加する
以下の手順で、GASのサービスにAdminDirectoryを追加してください。
①GASのコードエディタの左側にあるメニューの「サービス」の「+」ボタンを押す。
➁ダイアログが表示されるので、「Admin SDK API」を選択して、「追加」ボタンを押す。
③サービスに「AdminDirectory」が表示されて、利用可能になる。
3.4 GASを実行してユーザーIDを取得する
エディタ上の実行ボタンを押すと、取得したユーザーIDがメールアドレス一覧のB列に表示されます。
A | B | |
---|---|---|
1 | メールアドレス | ユーザーID |
2 | suguru@example.com | 123456789012345678901 |
3 | mayumi@example.com | 123456789012345678902 |
4 | tatsunori@example.com | 123456789012345678903 |
おわりに
Google Chat のユーザーIDは UI では確認できず、API を使って取得する必要があります。
本記事では Admin SDK Directory API を用いて、メールアドレスの一覧からユーザーIDをまとめて一度に取得する方法を解説しました。
Bot の開発やユーザー管理に活用してください!