![見出し画像](https://assets.st-note.com/production/uploads/images/13070514/rectangle_large_type_2_a2873ef1284e15290e5649267078ad09.png?width=1200)
Googleフォーム+GAS+Slackで毎週のWantedly応援合戦を自動化した方法
favyでは毎週Wantedly応援合戦(*1)を主催しています。これまでFacebookグループやメッセンジャーを使って応援合戦に参加する求人URLを各企業の方から共有していただき、それを私の方で集計し、リスト化したものを各企業へ展開する、という流れでした。
これをタイトルの通りGoogleフォーム+Google Apps Script(GAS)+Slackで自動化した方法をご紹介します。
(*1)Wantedly相互応援の仕組み。毎週約10〜20社に参加していただいています。
0. 前提
応援合戦の運用は、毎週火曜日までに私へメッセへンジャー等で求人URLを共有→水曜日に私がリストを作成し、各社へ展開するという流れでした。
1. Googleフォームを作成
Googleフォームで、下記のようなフォームを作成します。
2. フォームの回答先となるスプレッドシートを作成する
フォームに回答が送信されたら、スプレッドシートに保存されるように設定します。詳しくはGoolgeのヘルプを参考に。
こんな感じで、フォームを提出した時刻・社名・Wantedlyの求人URLがスプレッドシートシート上に蓄積されます。
3. 2で作成したスプレッドシートに「今日」と「今週の水曜日」のセルを設定する
応援合戦は、毎週水曜日に実施しているため、フォーム提出の時刻が、前回応援合戦を実施した日(つまり先週の水曜日)から今週の水曜日までの間にある「社名」と「求人URL」を取得してリスト化すれば良い。という話になります。
ちなみに関数は、
・今日;=NOW()
・今週の水曜日;=(NOW())-WEEKDAY(NOW())-3
こんな感じにしました。他にも色々やり方あると思うのでそこは好みでどうぞ。
4. SlackのIncoming WebHooks URLを取得
Incoming WebHooksのページより、Slackへ通知を送るためのインテグレーションを追加します。Webhook URLをメモしておいてください。
5. GASの作成
Googleスプレッドシートへ戻り、ツール>スクリプトエディタを選択しGASを起動します。
今回私が作成したのは以下のコードです。
var spreadSheet = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/hogehoge'); //スプレッドシートのURL
var postUrl = 'https://hooks.slack.com/services/hogehoge'; //WebHook URL
var sheet = spreadSheet.getSheetByName('hogehoge'); //シートの名前
var lastRow = sheet.getLastRow(); //シートの最終行を取得
function postSlack() {
var value = '<!channel>お待たせしました!今週の応援合戦のリストこちらです。御社内で共有と応援・シェアのご依頼、お願い致します!\n社内展開完了したら、コメントかリアクションをお願いします。\n'
for(var i = 2; i <= lastRow; i++) {
if((sheet.getRange(i,1).getValue() < sheet.getRange("今日で設定したセル").getValue()) && (sheet.getRange(i,1).getValue() > sheet.getRange("先週の水曜日で設定したセル").getValue())){
value = value + sheet.getRange(i,3).getValue() + '\n'+ sheet.getRange(i,4).getValue()+ '\n';}
}
var message = value
var jsonData =
{
"text" : message
};
var payload = JSON.stringify(jsonData);
var options =
{
"method" : "post",
"contentType" : "application/json",
"payload" : payload
};
UrlFetchApp.fetch(postUrl, options);
}
非エンジニアなので、美しくない箇所があるかもしれませんが…もっとこうした方が良いとかアドバイスはTwitterにいただけると嬉しいです。
6. GAS実行のトリガーを設定する
繰り返しになりますが、応援合戦は毎週水曜日に実施しているので、毎週水曜日に5. で作成したGASが実行されればOKです。
GASの編集>現在のプロジェクトのトリガーから、起動のトリガーを設定出来ます。
7. 結果
こんな感じでうまい具合に水曜日の12時〜13時のどこかでリスト化されて通知が来るようになりました。
8. 良かった点
・応援合戦の集計にかける手間がほぼ0に
・応援合戦の実施を忘れることが無くなった(今まで水曜日に抜けてて木曜日に実施したり…スミマセン)
・自動で集計されるので、各企業の求人URL提出期限が火曜日から水曜日午前中まで延長出来た
・勉強になった
9. ついでに
毎週月曜日に、全員にリマインドを送るGASも作りました。
var postUrl = 'https://hooks.slack.com/services/hogehoge'; //WebHook URL
function postSlackMonday() {
var jsonData =
{
"text" : "<!channel>お疲れ様です!今週応援合戦に参加される方は、水曜日の10時までにこちらのGoogleフォームから求人URLの提出をお願いいたします。\n https://forms.gle/hogehoge"
};
var payload = JSON.stringify(jsonData);
var options =
{
"method" : "post",
"contentType" : "application/json",
"payload" : payload
};
UrlFetchApp.fetch(postUrl, options);
}
GAS起動のトリガーは毎週月曜日12〜13時に設定しています。
10. まとめ
GASは非エンジニアでも手軽にチャレンジ出来るので、興味のある方はぜひチャレンジしてみてください。
繰り返しの作業はどんどん自動化したいですね。
11. 参考
この記事が気に入ったらサポートをしてみませんか?