Category Archives: Slack

Slackの自動招待フォームを作ってみた

BMXUG北陸のチャットツールとして、Slackを使う予定です
(コアメンバーで勉強会のやりとりを行うためのSlackです)

メンバーの招待をする際はメールアドレスで招待する、という方法しかないらしい
スマートじゃないなー・・・
BMXUG(ユーザーグループ全体の)のSlackの時はフォームから登録したような・・・

ということで!
真似して作ってみます!

1.Slackのトークン取得
2.GoogleDriveで新規のフォーム作成
3.フォームにスクリプトの追加

という流れで作っていきます

1.Slackのトークン取得

https://api.slack.com/web
にアクセス

Authenticationのとこの
Generate test tokensを押す

Test token generatorのとこにチームが並んでいるので
適用したいチームのトークンを取得する ※1

2.GoogleDriveで新規のフォーム作成

GoogleDriveの新規⇒その他⇒Googleフォームを選択する

フォーム名はとりあえず任意で
今回はメールアドレスを取得するので、記述式にし、
入力フォームはテキスト、入力チェックとしてメールアドレスを選択

この時URLの~/d/から/editまでの長い文字がformのIDとなるのでひかえておく※2

3.フォームにスクリプトの追加
先ほどのページの右上のメニューのスクリプトエディタがあるので開く

そこで
[code lang=”js”]
var slack_team = "チーム名"
var slack_token = "※1で取得したトークン"
var form_app_id = "※2で取得したID"

function form_submit(){
var form = FormApp.openById( form_app_id );
var formResponses = form.getResponses();
for (var i = 0; i < formResponses.length; i++) {
var formResponse = formResponses[i];
var itemResponses = formResponse.getItemResponses();
for (var j = 0; j < itemResponses.length; j++) {
var itemResponse = itemResponses[j];
slack_api(itemResponse.getResponse());
Logger.log('Response #%s to the question "%s" was "%s"',
(i + 1).toString(),
itemResponse.getItem().getTitle(),
itemResponse.getResponse());
}
}
}

function slack_api(inv_addr){
var url = "https://"+ slack_team +".slack.com/api/users.admin.invite";
var query = "email="+inv_addr+"&token="+slack_token+"&set_active=true";

var parameters = {
method : "post",
payload : query
};
var response = UrlFetchApp.fetch(url,parameters);
Logger.log(response.getContentText());
}
[/code]
を入力する

次にトリガーの設定を行う
リソースメニューの
現在のプロジェクトのトリガーを選ぶ

トリガーの設定を行う
この時選択するのは
form_submit、フォームから、フォーム送信時
を選択する

以上で、作成が終わりました!
スクリプトエディタを閉じて、フォーム画面の右上、送信から短縮のURLをコピーして
公開してみてください!