- Published on
Part3ð€ð»ã³ããOKð€ð»GASã䜿ã£ãŠSlackã«åœçªéç¥ããçç£æ§åäžãããã£ãšç޹ä»ããŸãð€ª
- Authors

- Name
- nisyuu (ã«ãã ã)
- @nishilyuu
ãã®èšäºã¯ ex-crowdworks Advent Calendar 2024ã®22æ¥ç®ã®èšäºã§ãã
ã¯ããã«
ä»å¹Žãæ ªåŒäŒç€Ÿã¯ã©ãŠãã¯ãŒã¯ã¹ãéè·ãã@nisyuuã§ããæ°å¹¹ç·ã«ä¹ããšåŽéœè»ã®ã·ã¥ãŠãã€åŒåœãããé£ã¹ãŸãã ãšã³ãžãã¢ãšããŠã¯ã©ãŠãã¯ãŒã¯ã¹ããã¯ïŒæ§ã¯ã©ãŠãããã¯ïŒãšããããªãŒã©ã³ã¹ãšäŒæ¥ããããã³ã°ãããšãŒãžã§ã³ããµãŒãã¹ãéçºããŠããŸããã
ex-crowdworks Advent Calendar 2024ã§Part1ãšPart2ã«åããŠGASã䜿ã£ãçç£æ§åäžã玹ä»ããŠããŸããã
https://qiita.com/nisyuu/items/4bf85d1d73a642e0558b
https://qiita.com/nisyuu/items/24a251424b412ef283d3
ä»åããGASãšSlackã䜿ã£ãçç£æ§æ¹åã«ã€ããŠç޹ä»ããŠãããŸãã
Part1ã§ã¯åœçªéç¥ã®äœãæ¹ã«ã€ããŠè§£èª¬ããŸãããæ±ºãŸã£ãã¿ã€ãã³ã°ã«éç¥ãããããªä»çµã¿ã§ããããäžã«ã¯æ åœè ãå¿ ããã宿œããªãå¯èœæ§ã®ããäœæ¥ããããšæããŸããäŸãã°ããªãªãŒã¹ãåœçªå¶ã«ããŠããå Žåã¯ããªãªãŒã¹ç©ããªããšã¹ãããã«ããããšããããšãããã§ãããã
ããã§æ¬èšäºã§ã¯ãäœæ¥ã®å®æœç¶æ³ã«å¿ããŠåœçªãå¶åŸ¡ããæ©èœã®äœãæ¹ã玹ä»ããŸãã 説æã¯ããªãªãŒã¹åœçªéç¥ãåæã«é²ããŠãããŸãã
ä»çµã¿
GASãšSlackã®é£æºã¯ãSlack ã¯ãŒã¯ãããŒãã«ããŒã䜿ããŸãã
GASã§ã¹ãã¬ããã·ãŒããããŠãŒã¶ãŒæ å ±ãååŸãããã¡ã·ãªããŒã¿ãŒãSlackãžéç¥ãããŸãã éç¥ãããéã«ãã¿ã³ãèšçœ®ããããšãã§ããããããã¿ã³ãæŒããããæ¬¡ã®æ åœè ãžéç¥ãããããã«ããŸãããã¿ã³ãæŒãããªããã°ãå床åãæ åœè ãžéç¥ãããããã«ããŸãã
GASã®å®è£
ãŠãŒã¶ãŒãã¹ãã¬ããã·ãŒãããååŸããå®è£ ãéç¥ã®å®è£ ã¯ãPart1ã§ç޹ä»ããŠãããã®ãåå©çšã§ããããåç §ããŠãã ããã
åå©çšãã颿°ã®åŒã³åºãã¯ããã®ããã«ãªããŸãã
function sendSlackMessageToReleasePersonInCharge() {
const spreadsheetId = 'xxxxxxxxxxxxxxxxxxx'
const sheetName = '宿ãªãªãŒã¹'
const sheet = getSheet(spreadsheetId, sheetName)
const data = sheet.getDataRange().getValues()
const personInChargeInfo = getPersonInChargeInfo(data)
const webhookUrl = 'https://hooks.slack.com/triggers/xxxxx/xxxxxxxxxxxxxx'
const payload = {
currentSlackUserId: personInChargeInfo.current.slackUserId,
nextSlackUserId: personInChargeInfo.next.slackUserId,
}
sendSlackMessage(webhookUrl, payload)
}
次ã«ãæ åœè ãåãæ¿ããããã®åŠçãçšæããŸãã
宿œããæ åœè ããã§ãã¯ããã®ã«å¿ èŠãªã·ãŒããäœæããŠãã ããã
| current_slack_user_id |
|---|
| UAEUET2N4 |
current_slack_user_idã«ã©ã ã«ã¯ãSlackã®ãŠãŒã¶ãŒIDãå ¥ããŸããIDã¯Slackã¯ãŒã¯ãããŒããéä¿¡ããããã®ãå ¥ããŸããã¯ãŒã¯ãããŒã®èšå®ã«ã€ããŠã¯ä»¥éã§èª¬æããŸãã
æ åœè åãæ¿ãã®GASå®è£ ã¯ãã¡ãã§ãã
function updateReleasePersonInCharge(e) {
const activeSheet = e.source.getActiveSheet()
if (activeSheet.getSheetName() !== '宿ãªãªãŒã¹å®æœæžã¿è
') return
const spreadsheetId = 'xxxxxxxxxxxxxxxxxxxxxx'
const sheetName = '宿ãªãªãŒã¹'
const sheet = getSheet(spreadsheetId, sheetName)
const data = sheet.getDataRange().getValues()
const personInChargeInfo = getPersonInChargeInfo(data)
updatePersonInCharge(sheet, personInChargeInfo)
}
ããªã¬ãŒã¯ã¹ãã¬ããã·ãŒãã®å€ã倿Žãããã¿ã€ãã³ã°ã§å®è¡ããããã«ããŠãã ããã 倿޿ã«å®è¡ããããšã§ãSlackã¯ãŒã¯ãããŒããéä¿¡ããããŠãŒã¶ãŒIDãã¹ãã¬ããã·ãŒããžå ¥åããããšãã«èªåã§æ¬¡ã®æ åœè ãéç¥ãããããã«ãªããŸãã
ã¯ãŒã¯ãããŒã®èšå®
Slackã®èªååããæ°ããã¯ãŒã¯ãããŒãäœæããŸãããŠã§ãããã¯ã®èšå®ããURLãçºè¡ããŠãã ããã èšå®æã«ãªã¯ãšã¹ãå ããåãåãããŒã¯ãååæ åœè ãšä»åæ åœè ã®SlackãŠãŒã¶ãŒIDãæå®ããŸãã
ååæ åœè ã®ãŠãŒã¶ãŒIDã¯ãæ åœè ãåãæ¿ããåŠçã®ããã«çšæããã·ãŒããæŽæ°ããããã«å¿ èŠã§ãã ã·ãŒãã«å€ãå ¥åããéãæŽæ°å Žæã®æå®ã倿å®ã§è¡ãå¿ èŠãããããååæ åœè ã®IDãéä¿¡ããŸãã ä»åæ åœè ã®ãŠãŒã¶ãŒIDã¯ãäœæ¥ã宿œããŠãããããæ åœè ãéç¥ããããã«äœ¿çšããŸãã
ã¡ãã»ãŒãžéç¥ã®ã¹ãããã«ã¯ãã¿ã³ãèšçœ®ã§ããããããäœæ¥å®æœåŸæŒããŠãã ããããªã©ã®ãã¿ã³åã§èšå®ããŸãã ãã¿ã³ãèšçœ®ããŠãããšããã¿ã³ãæŒãããåŸã«ãã¡ãã»ãŒãžéç¥åŸã«ç¶ãã¹ããããå®è¡ãããŸãã ã¹ãã¬ããã·ãŒãã®å€æŽæ°ã¯ãã¡ãã»ãŒãžéç¥ã®çŽåŸã«èšå®ããŸãã Slackã¯ãŒã¯ãããŒã«ã¯ãã¹ãã¬ããã·ãŒãã®å€ãæŽæ°ããããã®ã¹ããããããããã远å ãšèšå®ãããŠãã ããã
ãããã«
GASã䜿ã£ãçç£æ§åäžã®ç޹ä»ã¯ãã²ãšãŸãPart3ã§çµãããŸãã ãã²ãå°æ¥ææãªæªæ¥ããçæ§ã«ã¯ããããŸã§ã«ç޹ä»ããå 容ãããŒã ã«å°å ¥ããŠããã ããæ¥æ¬ã®çµæžçºå±ã®ããã«è²¢ç®ããã ãããšããšã匷ããåå®ã«é¡ã£ãŠããŸãã