見出し画像

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. 参考

#GAS #コーポレートエンジニアリング #初note #favy

この記事が気に入ったらサポートをしてみませんか?