対象プランOFFLINEBUSINESSPRO
実装にかかる想定時間:約30分
イベント毎に設定する必要がある:No
毎日特定の時間に、次回開催予定のイベントの参加登録状況をSlackへ通知する方法をご紹介します。
高頻度でセミナーを開催する企業様や、大きなイベントを控えている企業様で、多くの方が日々集客状況を社内報告しています。
毎回管理画面を確認しに行かなくとも、集客状況が自動でSlackに通知されることで工数の削減に繋がります。一度設定した後は、イベント毎にメンテナンスの必要がありません。本記事をご参考にSlack連携をご活用ください。
1. APIキーを発行する
まず初めに、APIキーの発行方法を参考にAPIキーを発行してください。
こちらのキーは次の手順のGoogle Apps Scriptに設定します。一度発行したら二度と表示されませんので、発行時 メモに控えるようにしてください。
2. Google Apps ScriptでScriptを作成する
① Google Apps Scriptから[新しいプロジェクト]をクリックします。
② 初期値に設定されているfunction myFunction() {} を削除し、以下のサンプルコードを入力します。
サンプルコード
赤文字
EventHubから発行したAPIキー 部分に手順1で発行したAPIキーを、SlackのWebhookURL には通知させたいチャネルのWebhookURLを挿入してください。
また、GASに埋め込んだAPIキーの取り扱いには十分ご注意ください。APIを含んだScriptの共有をすると、悪意あるユーザーにEventHubの操作を実行される可能性があります。
青文字
解説文を入れています。//コメントアウトで記載しているため、Scriptにそのまま記載しても問題なく実行されますが、必要ない場合は削除しても問題ございません。
function noticeWebinarProgress() {
const WEBHOOK_URL = 'SlackのWebhookURL';
const API_KEY = 'EventHubから発行したAPIキー';
//Slackメッセージ
var message = '次回開催されるウェビナーの集客状況をお知らせします :mega:'
//イベント一覧取得
var events = getEventList(API_KEY);
for(var i=0; i<events.length; i++){
//開催日の翌日に通知する
var endDate = Utilities.formatDate(new Date(events[i].endAt), 'JST', "yyyy-MM-dd 00:00");
var today = Utilities.formatDate(new Date(), 'JST', "yyyy-MM-dd 00:00");
//開催終了していなければ次のイベントへ
if(endDate > today){
continue;
}
//開催終了しているイベントの場合
if(endDate < today){
if(i == 0){
//次のイベントがない場合は終了
break;
}
//開催終了したイベントの次のイベントを指定
t = i-1;
}
//開催終了日当日はそのイベントを通知
if(endDate == today){
t = i;
}
//イベント名
message = message + '\n\n' + events[t].name;
//開催期間
var startAt = Utilities.formatDate(new Date(events[t].startAt), 'JST', "yyyy-MM-dd HH:mm");
var endAt = Utilities.formatDate(new Date(events[t].endAt), 'JST', "yyyy-MM-dd HH:mm");
message = message + '\n\n'+ '開催期間:' + startAt + ' 〜 ' + endAt;
//イベント詳細取得
var eventDetail = getEventDetail(API_KEY,events[t].eventKey)
//集客目標
message = message + '\n'+ '集客目標:' + eventDetail.targetUserCount;
//登録者を取得
var userList = getUserList(API_KEY,events[t].eventKey,0);
var userCount = userList.userCount;
//登録者数
message = message + '\n'+ '登録者数:' + userCount;
message = message + '\n'+ '達成率:' + Math.floor(userCount / eventDetail.targetUserCount * 100) + '%';
//Slackメッセージ投稿
postSlack(WEBHOOK_URL,message);
break;
}
}
function getEventList(API_KEY){
const requestUrl = 'https://api.eventhub.jp/v1/events?limit=100';
const headers = {
'X-API-KEY': API_KEY,
'Content-Type': 'application/json'
}
var options = {
"method" : "get",
"headers" : headers,
}
var response = UrlFetchApp.fetch(requestUrl, options);
var responseJson = JSON.parse(response.getContentText());
return responseJson.events;
}
function getEventDetail(API_KEY,eventKey){
const requestUrl = 'https://api.eventhub.jp/v1/events/' + eventKey;
const headers = {
'X-API-KEY': API_KEY,
'Content-Type': 'application/json'
}
var options = {
"method" : "get",
"headers" : headers,
}
var response = UrlFetchApp.fetch(requestUrl, options);
var responseJson = JSON.parse(response.getContentText());
return responseJson;
}
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" : "get",
"headers" : headers,
"payload": JSON.stringify(data),
};
var response = UrlFetchApp.fetch(requestUrl, options);
var responseJson = JSON.parse(response.getContentText());
return responseJson;
}
function postSlack(WEBHOOK_URL,message){
const options =
{
"method" : "post",
"contentType" : "application/json",
"payload" : JSON.stringify(
{
"text" : message
}
)
};
UrlFetchApp.fetch(WEBHOOK_URL, options);
}
3. トリガーを設定する
作成したScriptのトリガーを以下のように設定します。
実行する関数 | noticeWebinarProgress |
実行するデプロイ | Head |
イベントのソース | 時間主導型 |
時間ベースのトリガーのタイプ | 日付ベースのタイマー |
時間の間隔 | 午前9時〜10時 ※ 通知させたい時間をお選びください |
4. 通知される内容について
トリガーの設定が完了すると、設定した時間に通知が来るようになります。
今回ご紹介したScriptで通知される集客状況は、次回に開催されるイベントのみの通知となっております。また、通知される値は以下の通りです。通知させたい内容によってScriptを変更してください。
イベント名 | [基本設定]>[イベント情報]で設定したイベント名 |
開催期間 | [基本設定]>[イベント情報]で設定した開催期間 |
集客目標 | [基本設定]>[イベント情報]で設定した集客目標 |
登録者数 | ユーザータイプが来場者の登録者数 |
達成率 | 集客目標に対する登録者数の割合 |
5. サポート対応について
こちらでご紹介する方法は、提供する情報の継続や正確性を完全に保証するものではありません。実装方法に関するご不明な点はGoogleのサポート、もしくは社内エンジニアへお問い合わせください。
機能や取得したいAPI情報が足りない場合は、ご要望としてお伺いしますので、カスタマーサポートへお問い合わせください。