Skip to content

Instantly share code, notes, and snippets.

@aibax
Last active May 9, 2021 14:22
Show Gist options
  • Save aibax/c0fd6449cd93ab376c671dd47285a006 to your computer and use it in GitHub Desktop.
Save aibax/c0fd6449cd93ab376c671dd47285a006 to your computer and use it in GitHub Desktop.
Google Form を使用した Slack の自動招待フォーム用 Google Apps Script
/*
* [SETUP]
* 1. Slack のAPIトークンを発行する
* 2. Google Form でフォームを作成する
* - 必要な項目はメールアドレスのみ
* - Google Form で指定したメールアドレスの項目名を FORM_ITEM_TITLE に設定する
* 3. スクリプトエディタでこのスクリプトを登録
* - SLACK_API_TOKEN にAPIトークンを指定
* - SLACK_API_ENDPOINT にチーム名を指定
* 4. フォームの送信時のトリガーに onFormSubmit を指定(要認証)
*/
/* Googleフォームで作成したメールアドレスの入力項目名 */
var FORM_ITEM_TITLE = "メールアドレス";
/* SlackのAPIトークン */
//TODO: https://api.slack.com/web の Test token generator からAPIトークンを発行
var SLACK_API_TOKEN = "YOUR_SLACK_API_TOKEN";
/* Slackのユーザー招待のエンドポイントURL */
//TODO: YOURTEAM をあなたのチーム名に変更
var SLACK_API_ENDPOINT = "https://YOURTEAM.slack.com/api/users.admin.invite";
function onFormSubmit(e) {
var itemResponses = e.response.getItemResponses();
for (var i = 0; i < itemResponses.length; i++) {
var itemResponse = itemResponses[i];
if (itemResponse.getItem().getTitle() == FORM_ITEM_TITLE) {
var email = itemResponse.getResponse();
inviteToSlackTeam(email);
}
}
}
function inviteToSlackTeam(email) {
Logger.log("Invite user. (email = '%s')", email);
var query = "email=" + encodeURIComponent(email) + "&token=" + SLACK_API_TOKEN + "&set_active=true";
var parameters = {
method : "post",
payload : query
};
var response = UrlFetchApp.fetch(SLACK_API_ENDPOINT, parameters);
Logger.log("Result : %s", response.getContentText());
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment