こんにちは。QAエンジニアの山本です。 この記事では、Slackのスレッドに予約投稿する方法を共有します。
概要
Slackのスレッドに予約投稿したいメッセージを、スプレッドシートに記載しておくと、Zapierが自動で予約投稿するシステムを作成します(^^)/
事前に準備して頂きたいもの
スプレッドシート・Zapierの作成手順
スプレッドシート
最初に、スプレッドシートを作成します。 完成イメージは、下記です。
作成手順
- 新規ファイルを作成します
- 完成イメージを参考に、1行目の項目名を入力します
- A列の予約IDの入力をします
- A~E列を枠線で囲みます
- G列に下記関数を入力します(見本は2行目の値です)
=REGEXREPLACE(REGEXREPLACE($B2,".*archives/",""),"/.*","")
- H列に下記関数を入力します(見本は2行目の値です)
=REGEXMATCH(REGEXREPLACE($B2,".*archives/",""),"/")
- I列に下記関数を入力します(見本は2行目の値です)
=REGEXMATCH($B2,"thread_ts")
- J列に下記関数を入力します(見本は2行目の値です)
=IF(AND($H2,$I2=FALSE),REGEXREPLACE($B2,".*archives/.*/p",""),"")
- K列に下記関数を入力します(見本は2行目の値です)
=LEFT($J2,10)
- L列に下記関数を入力します(見本は2行目の値です)
=RIGHT($J2,6)
- M列に下記関数を入力します(見本は2行目の値です)
=IFS($I2,REGEXREPLACE(REGEXREPLACE($B2,".*thread_ts=",""),"&.*",""),$H2,CONCATENATE($K2,".",$L2),TRUE,"")
- O2のセルに下記関数を入力します
=TEXT(NOW(),"YYYY-MM-DD")
- P2のセルに下記関数を入力します
=TEXT(NOW(),"HH")
- Q2のセルに下記関数を入力します
=COUNTIFS(D2:D100,O2,E2:E100,P2)
- R2のセルに下記関数を入力します
=IFERROR(QUERY(A2:M100, "select C,G,M where D = date '"&O2&"' and E = "&P2&""),"")
スプレッドシートは、上記で完成です!
Zapier
次に、Zapierを作成します。 完成イメージは、下記です。
作成手順
最初にCreate a Zap画面で、下記のような文章を入力し、「Generate」をクリックします
英文の例:Once every hour, send values from Spreadsheet to the Slack thread
生成したアプリを開きます。
1. Zapの手順1に「Schedule by Zapier」を追加する
- App&eventで「Schedule by Zapier」を選択する
- Eventで「Every hour」を選択する
- Trigger>Trigger on weekendsで「no」を選択する
- Testを実行する
2. Zapの手順2に「Get Many Spreadsheet Rows 」を追加する
- App&eventで「Google Sheets」を選択する
- Eventで「Get Many Spreadsheet Rows 」を選択する
- Accountで自分のGoogleアカウントを選択する
- Action>Driveで上記のスプレッドシートが格納されているDriveを選択する
- Action>Spreadsheetで、上記のスプレッドシートを選択する
※スプレッドシートを検索する時は、スプレッドシートIDで検索する
https://docs.google.com/spreadsheets/d/(スプレッドシートID)/edit#gid=0
- Action>Worksheetで、上記のスプレッドシートのシート名を選択する
- Action>Columnsに「Q:Q」を入力する
- Action>Row Countに「1」を入力する
- Action>First Rowに「2」を入力する
- Testを実行する
3. Zapの手順3に「Filter by Zapier」を追加する
- Appで「Filter by Zapier」を選択する
- Filter setup & testingで下記を選択する
4. Zapの手順4に「Get Many Spreadsheet Rows 」を追加する
- App&eventで「Google Sheets」を選択する
- Eventで「Get Many Spreadsheet Rows 」を選択する
- Accountで自分のGoogleアカウントを選択する
- Action>Driveで上記のスプレッドシートが格納されているDriveを選択する
- Action>Spreadsheetで、上記のスプレッドシートを選択する
- Action>Worksheetで、上記のスプレッドシートのシート名を選択する
- Action>Columnsに「R:T」を入力する
- Action>Row Countで下記画像の値を選択する
- Action>First Rowに「2」を入力する
- Testを実行する
5. Zapの手順5に「Looping by Zapier」を追加する
- App&eventで「Looping by Zapier」を選択する
- Eventで「Create Loop From Line Items」を選択する
- Action > Line itemsで下記画像の値を選択する
- Testを実行する
6. Zapの手順6に「Send Channel Message」を追加する
- App&eventで「Slack」を選択する
- Eventで「Send Channel Message」を選択する
- Accountで自分のSlackアカウントを選択する
- Action>Channel・Message Textに下記を選択する
- Threadで下記画像の値を選択する
- Testを実行する
※送信予定のメッセージが2個以上ある時でも、Testでは1個のメッセージしか送信されない
7. Timezoneを日本の時間に変更する
- サイドメニューのDetailsアイコンをクリックする
- Timezoneを「GMT+09:00 Asia/Tokyo」に変更する
8. 「Publish」をクリックする
完成!!