対象プランOFFLINEBUSINESSPRO
実装にかかる想定時間:約20分
イベント毎に設定する必要がある:Yes
APIを活用して、イベントに参加登録されたらユーザー情報をSlackに通知することができます。
どなたがイベントへ参加登録したかどうか、確認するためにはEventHubの管理画面を見に行く必要がありますが、本ページでご紹介する連携を設定するとSlackで登録者を確認することが可能です。イベントの登録者状況把握にお役立てください!
<tips>Slackだけでなく、特定のメールアドレスにも通知が可能です。本ページではSlackに通知する方法をご紹介します。</tips>
1. APIキーを発行する
まず初めに、APIキーの発行方法を参考にAPIキーを発行してください。
こちらのキーは次の手順のGoogle Apps Scriptに設定します。一度発行したら二度と表示されませんので、発行時 メモに控えるようにしてください。
2. スプレッドシートを作成する
次に、新規作成からスプレッドシートを1つ作成します。
以下のように、A列からD列までヘッダーにタイトルを入力し、シート名を「users」にします。
A1 | B2 | C3 | D4 |
affiliation | name | update at |
<tips>スプレッドシートIDは、URLの赤字部分から取得可能です。次の手順で必要なため、コピーしてください。
https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxx/edit#gid=0
</tips>
3. Google Apps ScriptでScriptを作成する
① Google Apps Scriptから[新しいプロジェクト]をクリックします。
② 初期値に設定されているfunction myFunction() {} を削除し、以下のサンプルコードを入力します。
サンプルコード
赤文字
EventHubから発行したAPIキー部分に手順1で発行したAPIキーを、SlackのWebhookURL には通知させたいチャネルのWebhookURLを、eventKeyにはイベント毎に発行されるキーを挿入してください。
また、GASに埋め込んだAPIキーの取り扱いには十分ご注意ください。APIを含んだScriptの共有をすると、悪意あるユーザーにEventHubの操作を実行される可能性があります。
青文字
解説文を入れています。//コメントアウトで記載しているため、Scriptにそのまま記載しても問題なく実行されますが、必要ない場合は削除しても問題ありません。
function noticeRegistration() {
const WEBHOOK_URL = 'SlackのWebhookURL';
const API_KEY = 'EventHubから発行したAPIキー';
const EVENT_KEY = 'eventKey';
const SPREADSHEET = SpreadsheetApp.openById('スプレッドシートID');
const SHEET = SPREADSHEET.getSheetByName('users');
//ユーザー一覧を取得
var limit = 100;
var users = [];
for (var offset = 0; offset === users.length; offset += limit) {
var ary = getUserList(API_KEY,EVENT_KEY,offset);
users = users.concat(ary);
}
var lastRow = SHEET.getLastRow();
var count = 1;
for(user of users){
Logger.log(count);
//シートにメールアドレスが存在するかチェックして既に通知済みかどうか確認
var cells = SHEET.createTextFinder(user.email).findAll();
if(cells.length == 0){
SHEET.getRange(lastRow + count,1).setValue(user.affiliation);
SHEET.getRange(lastRow + count,2).setValue(user.email);
SHEET.getRange(lastRow + count,3).setValue(user.lastName + ' ' + user.firstName);
SHEET.getRange(lastRow + count,4).setValue(user.updatedAt);
//Slackメッセージ
var message = '企業名: ' + user.affiliation + '\n';
message = message + '氏名: ' + user.lastName + ' ' + user.firstName;
//Slackメッセージ投稿
postSlack(WEBHOOK_URL,message);
count++;
}
continue;
}
}
function getUserList(API_KEY,eventKey,offset){
var requestUrl = 'https://api.eventhub.jp/v1/users/' + eventKey + '?offset=' + offset + '&limit=100'
var headers = {
'X-API-KEY': API_KEY,
'Content-Type': 'application/json'
};
var data = {
"userType": ["participant"]
};
var options = {
"method" : "post",
"headers" : headers,
"payload": JSON.stringify(data),
};
var response = UrlFetchApp.fetch(requestUrl, options);
var responseJson = JSON.parse(response.getContentText());
return responseJson.users;
}
function postSlack(WEBHOOK_URL,message){
const options =
{
"method" : "post",
"contentType" : "application/json",
"payload" : JSON.stringify(
{
"text" : message
}
)
};
UrlFetchApp.fetch(WEBHOOK_URL, options);
}
4. トリガーを設定する
作成したScriptのトリガーを以下のように設定します。
実行する関数 | noticeRegistration |
実行するデプロイ | Head |
イベントのソース | 時間主導型 |
時間ベースのトリガーのタイプ | 分ベースのタイマー |
時間の間隔 | 15分おき ※ 15分おきにScriptが実行されるため、参加登録したユーザーを通知する間隔が15分となります。 |
5. 通知される内容について
トリガーの設定が完了すると、参加登録されたユーザーがチャネルに通知されるようになります。
今回は、登録者の企業名と氏名を通知させるScriptをご紹介しています。通知させたい内容によってScriptを変更してください。
6. サポート対応について
こちらでご紹介する方法は、提供する情報の継続や正確性を完全に保証するものではありません。実装方法に関するご不明な点はGoogleのサポート、もしくは社内エンジニアへお問い合わせください。
機能や取得したいAPI情報が足りない場合は、ご要望としてお伺いしますので、EventHubカスタマーサポートへお問い合わせください。