事例6_Slackチャンネルにメンションメッセージを飛ばした後、スレッドへの返信有無を判別して、リマインドする
■事前準備
・Slackとのマイアプリ登録を事前に行います。
※設定についてはこちらをご参照ください。 https://intercom.help/yoom/ja/articles/5483092
・メンションされたユーザーと返信者を判定するため関数を用います。そのためのスプレッドシートを用意します。
■実際のスプレッドシート(閲覧権限のみとなります。使用する場合はコピーしてご自身の環境で使えるように設定してください)
・加工用のシート▼
https://docs.google.com/spreadsheets/d/18gQr0LvOzW2zFaj5Sjhe8LptjhBTcsBMWAnpAuIld5A/edit#gid=2126034600
・フィルターを使って未返答ユーザーを羅列するシート▼
https://docs.google.com/spreadsheets/d/18gQr0LvOzW2zFaj5Sjhe8LptjhBTcsBMWAnpAuIld5A/edit#gid=288054127
※少し複雑な関数の組み合わせになるので、まずはこのシートの関数を見ながら作成してください。
※対象のシートは一度全範囲書式なし設定としてください。
※以下スプレッドシートの対象セルなどはすべてこのシート上のセルの位置で合わせています。
■作成方法
①アプリトリガーからSlackを選択し、以下の設定を行いテスト・保存します。
・トリガーアクション:新しいメッセージがチャンネルに投稿されたら
・トリガー起動間隔:選択できる最短時間に設定します。
・チャンネルID:起動させたいチャンネルのIDを候補から選択します。
・テスト:実際にメンションを行ってメッセージを投稿後、テストしレスポンス結果の中のts(タイムスタンプ)とelements下にあるuser_id(メンションされた対象者)の+マークを押し、JSONPATHにてアウトプットを追加します。
また、user_idについては以下のようにJSONPATHを変更し、すべてのメンションユーザーを取得します。
blocks[0].elements[0].elements[*].user_id
※JSONPATHでアウトプットを取得する方法はこちら。 https://intercom.help/yoom/ja/articles/5404443
②トリガー下の+マークを押し、アプリと連携するオペレーションからスプレッドシートを選択して、以下設定を行い、テスト・保存します。
・アクション:シート(タブ)をコピーする
・スプレッドシートID(コピー元):事前に用意した加工用のスプレッドシートを候補から選択します。
・シートID:加工用で使用しているシートを候補から選択します。
・スプレッドシートID(コピー先):同じスプレッドシートを候補から選択します。
このようにスプレッドシート上に加工用のシートタブをコピーすることで、処理がバッティングすることを防止します。
③+マークを押し、アプリと連携するオペレーションからスプレッドシートを選択して、以下設定を行い、テスト・保存します。
・アクション:セルに値を入力
・スプレッドシートID:事前に用意した加工用のスプレッドシートを候補から選択します。
・シート名:②でコピーしたシートから取得したシート名を{{シート名}}のように埋め込みます。
・対象のセル:B1と設定します。
・値:①でJSONPATHで取得したuser_idを{{user_id}}のように埋め込みます。
※アウトプットを埋め込む設定についてはこちらをご参照ください。 https://intercom.help/yoom/ja/articles/8223528
④+マークを押し、待機するオペレーションを選択して以下設定を行い、保存します。
・設定方法:指定の時間を待機
・設定単位:任意の単位を選択します。
・時間:任意の時間を入力します。
例では、6時間待機としています。
⑤+マークを押し、アプリと連携するオペレーションからSlackを選択し、以下設定を行ってテスト・保存します。
・アクション:会話のスレッド内容を取得
・チャンネルID:①と同じチャンネルIDを候補から選択します。
・タイムスタンプ:①でJSONPATHで取得したタイムスタンプを{{ts}}のように埋め込みます。
・テスト:一度スレッドに返答したあとテストし、①と同様レスポンス結果の中の2項目にあたる箇所のuser横の+マークを押し、返信者のIDをJSONPATHで取得します。また、このとき以下のように一部JSONPATHの内容を変更して、すべての返信ユーザーを取得します。
messages[1:].user
⑥+マークを押し、アプリと連携するオペレーションからスプレッドシートを選択して、以下設定を行い、テスト・保存します。
・アクション:セルに値を入力
・スプレッドシートID:事前に用意した加工用のスプレッドシートを候補から選択します。
・シート名:②でコピーしたシートから取得したシート名を{{シート名}}のように埋め込みます。
・対象のセル:B2と設定します。
・値:⑤でJSONPATHで取得したuserを埋め込みます。※{{設定した項目名}}のように埋め込みます。
⑦トリガー下の+マークを押し、アプリと連携するオペレーションからスプレッドシートを選択して、以下設定を行い、テスト・保存します。
・アクション:シート(タブ)をコピーする
・スプレッドシートID(コピー元):事前に用意した加工用のスプレッドシートを候補から選択します。
・シートID:フィルターで使用しているシートを候補から選択します。
・スプレッドシートID(コピー先):同じスプレッドシートを候補から選択します。
このようにスプレッドシート上に加工用のシートタブをコピーすることで、処理がバッティングすることを防止します。
⑧トリガー下の+マークを押し、アプリと連携するオペレーションからスプレッドシートを選択して、以下設定を行い、テスト・保存します。
・アクション:数式を繰り返す
・スプレッドシートID:事前に用意した加工用のスプレッドシートを候補から選択します。
・シートID:⑦のコピーで取得したシートIDを埋め込みます。
・数式:=FILTER('{{シート名}}'!A7:B,'{{シート名}}'!B7:B="") このような関数を入れ込みます。
・開始行番号:1と入力します。
・終了行番号:2と入力します。
・開始列番号:0と入力します。
・終了列番号:1と入力します。
このようにすることで、コピーしたシートにフィルター関数を反映させます。
⑨+マークを押し、データベースを操作するオペレーションからスプレッドシートを選択して、以下設定を行い、テスト・保存します。
・実行アクション:複数のレコードを取得する(最大10件)
・スプレッドシートID:事前に用意した加工用のスプレッドシートを候補から選択します。
・スプレッドシートのタブ名:⑦でコピーしたシートから取得したシート名を{{シート名_〇〇}}のように埋め込みます。
・テーブル範囲:A1:Bと設定します。
・取得したいレコードの値:列をIDとし、値が空でないにして対象レコードをすべて取得します。
こうすることで、返答していないユーザーのIDを最大10名まで一括取得できます。
⑩+マークを押し、同じ処理を繰り返すオペレーションを選択して、以下設定を行い保存します。
・オペレーション:⑨のオペレーションを選択します。
・アウトプット:⑨で取得した送信対象者IDを選択します。
⑪ループ方面の+マークを押し、アプリと連携するオペレーションからSlackを選択して以下設定し、テスト・保存します。
・アクション:スレッドにメッセージを送る
・投稿先のチャンネルID:①と同じチャンネルを選択します。
・タイムスタンプ:①でJSONPATHで取得したタイムスタンプを{{ts}}のように埋め込みます。
・メッセージ:⑩で取得したループ変数を用いてメンションし、任意のメッセージを送ります。メンションイメージは以下です。
<@{{送信対象者IDのループ変数}}>
※Slackでメンション付きメッセージを送る方法はこちら。 https://intercom.help/yoom/ja/articles/5544202
⑫その他のルートの+マークを押し、アプリと連携するオペレーションからスプレッドシートを選択して、以下設定を行い、テスト・保存します。
・アクション:シート(タブ)を削除する
・スプレッドシートID:事前に用意した加工用のスプレッドシートを候補から選択します。
・シートID:②でコピーしたシートから取得したシートIDを{{シートID}}のように埋め込みます。
このようにすることで、すべてのリマインドが終わったらコピーした不要なシートを削除し、シートが無限にコピーされるのを防ぎます。
⑬その他のルートの+マークを押し、アプリと連携するオペレーションからスプレッドシートを選択して、以下設定を行い、テスト・保存します。
・アクション:シート(タブ)を削除する
・スプレッドシートID:事前に用意した加工用のスプレッドシートを候補から選択します。
・シートID:⑦でコピーしたシートから取得したシートIDを{{シートID}}のように埋め込みます。
このようにすることで、すべてのリマインドが終わったらコピーした不要なシートを削除し、シートが無限にコピーされるのを防ぎます。
・Slackとのマイアプリ登録を事前に行います。
※設定についてはこちらをご参照ください。 https://intercom.help/yoom/ja/articles/5483092
・メンションされたユーザーと返信者を判定するため関数を用います。そのためのスプレッドシートを用意します。
■実際のスプレッドシート(閲覧権限のみとなります。使用する場合はコピーしてご自身の環境で使えるように設定してください)
・加工用のシート▼
https://docs.google.com/spreadsheets/d/18gQr0LvOzW2zFaj5Sjhe8LptjhBTcsBMWAnpAuIld5A/edit#gid=2126034600
・フィルターを使って未返答ユーザーを羅列するシート▼
https://docs.google.com/spreadsheets/d/18gQr0LvOzW2zFaj5Sjhe8LptjhBTcsBMWAnpAuIld5A/edit#gid=288054127
※少し複雑な関数の組み合わせになるので、まずはこのシートの関数を見ながら作成してください。
※対象のシートは一度全範囲書式なし設定としてください。
※以下スプレッドシートの対象セルなどはすべてこのシート上のセルの位置で合わせています。
■作成方法
①アプリトリガーからSlackを選択し、以下の設定を行いテスト・保存します。
・トリガーアクション:新しいメッセージがチャンネルに投稿されたら
・トリガー起動間隔:選択できる最短時間に設定します。
・チャンネルID:起動させたいチャンネルのIDを候補から選択します。
・テスト:実際にメンションを行ってメッセージを投稿後、テストしレスポンス結果の中のts(タイムスタンプ)とelements下にあるuser_id(メンションされた対象者)の+マークを押し、JSONPATHにてアウトプットを追加します。
また、user_idについては以下のようにJSONPATHを変更し、すべてのメンションユーザーを取得します。
blocks[0].elements[0].elements[*].user_id
※JSONPATHでアウトプットを取得する方法はこちら。 https://intercom.help/yoom/ja/articles/5404443
②トリガー下の+マークを押し、アプリと連携するオペレーションからスプレッドシートを選択して、以下設定を行い、テスト・保存します。
・アクション:シート(タブ)をコピーする
・スプレッドシートID(コピー元):事前に用意した加工用のスプレッドシートを候補から選択します。
・シートID:加工用で使用しているシートを候補から選択します。
・スプレッドシートID(コピー先):同じスプレッドシートを候補から選択します。
このようにスプレッドシート上に加工用のシートタブをコピーすることで、処理がバッティングすることを防止します。
③+マークを押し、アプリと連携するオペレーションからスプレッドシートを選択して、以下設定を行い、テスト・保存します。
・アクション:セルに値を入力
・スプレッドシートID:事前に用意した加工用のスプレッドシートを候補から選択します。
・シート名:②でコピーしたシートから取得したシート名を{{シート名}}のように埋め込みます。
・対象のセル:B1と設定します。
・値:①でJSONPATHで取得したuser_idを{{user_id}}のように埋め込みます。
※アウトプットを埋め込む設定についてはこちらをご参照ください。 https://intercom.help/yoom/ja/articles/8223528
④+マークを押し、待機するオペレーションを選択して以下設定を行い、保存します。
・設定方法:指定の時間を待機
・設定単位:任意の単位を選択します。
・時間:任意の時間を入力します。
例では、6時間待機としています。
⑤+マークを押し、アプリと連携するオペレーションからSlackを選択し、以下設定を行ってテスト・保存します。
・アクション:会話のスレッド内容を取得
・チャンネルID:①と同じチャンネルIDを候補から選択します。
・タイムスタンプ:①でJSONPATHで取得したタイムスタンプを{{ts}}のように埋め込みます。
・テスト:一度スレッドに返答したあとテストし、①と同様レスポンス結果の中の2項目にあたる箇所のuser横の+マークを押し、返信者のIDをJSONPATHで取得します。また、このとき以下のように一部JSONPATHの内容を変更して、すべての返信ユーザーを取得します。
messages[1:].user
⑥+マークを押し、アプリと連携するオペレーションからスプレッドシートを選択して、以下設定を行い、テスト・保存します。
・アクション:セルに値を入力
・スプレッドシートID:事前に用意した加工用のスプレッドシートを候補から選択します。
・シート名:②でコピーしたシートから取得したシート名を{{シート名}}のように埋め込みます。
・対象のセル:B2と設定します。
・値:⑤でJSONPATHで取得したuserを埋め込みます。※{{設定した項目名}}のように埋め込みます。
⑦トリガー下の+マークを押し、アプリと連携するオペレーションからスプレッドシートを選択して、以下設定を行い、テスト・保存します。
・アクション:シート(タブ)をコピーする
・スプレッドシートID(コピー元):事前に用意した加工用のスプレッドシートを候補から選択します。
・シートID:フィルターで使用しているシートを候補から選択します。
・スプレッドシートID(コピー先):同じスプレッドシートを候補から選択します。
このようにスプレッドシート上に加工用のシートタブをコピーすることで、処理がバッティングすることを防止します。
⑧トリガー下の+マークを押し、アプリと連携するオペレーションからスプレッドシートを選択して、以下設定を行い、テスト・保存します。
・アクション:数式を繰り返す
・スプレッドシートID:事前に用意した加工用のスプレッドシートを候補から選択します。
・シートID:⑦のコピーで取得したシートIDを埋め込みます。
・数式:=FILTER('{{シート名}}'!A7:B,'{{シート名}}'!B7:B="") このような関数を入れ込みます。
・開始行番号:1と入力します。
・終了行番号:2と入力します。
・開始列番号:0と入力します。
・終了列番号:1と入力します。
このようにすることで、コピーしたシートにフィルター関数を反映させます。
⑨+マークを押し、データベースを操作するオペレーションからスプレッドシートを選択して、以下設定を行い、テスト・保存します。
・実行アクション:複数のレコードを取得する(最大10件)
・スプレッドシートID:事前に用意した加工用のスプレッドシートを候補から選択します。
・スプレッドシートのタブ名:⑦でコピーしたシートから取得したシート名を{{シート名_〇〇}}のように埋め込みます。
・テーブル範囲:A1:Bと設定します。
・取得したいレコードの値:列をIDとし、値が空でないにして対象レコードをすべて取得します。
こうすることで、返答していないユーザーのIDを最大10名まで一括取得できます。
⑩+マークを押し、同じ処理を繰り返すオペレーションを選択して、以下設定を行い保存します。
・オペレーション:⑨のオペレーションを選択します。
・アウトプット:⑨で取得した送信対象者IDを選択します。
⑪ループ方面の+マークを押し、アプリと連携するオペレーションからSlackを選択して以下設定し、テスト・保存します。
・アクション:スレッドにメッセージを送る
・投稿先のチャンネルID:①と同じチャンネルを選択します。
・タイムスタンプ:①でJSONPATHで取得したタイムスタンプを{{ts}}のように埋め込みます。
・メッセージ:⑩で取得したループ変数を用いてメンションし、任意のメッセージを送ります。メンションイメージは以下です。
<@{{送信対象者IDのループ変数}}>
※Slackでメンション付きメッセージを送る方法はこちら。 https://intercom.help/yoom/ja/articles/5544202
⑫その他のルートの+マークを押し、アプリと連携するオペレーションからスプレッドシートを選択して、以下設定を行い、テスト・保存します。
・アクション:シート(タブ)を削除する
・スプレッドシートID:事前に用意した加工用のスプレッドシートを候補から選択します。
・シートID:②でコピーしたシートから取得したシートIDを{{シートID}}のように埋め込みます。
このようにすることで、すべてのリマインドが終わったらコピーした不要なシートを削除し、シートが無限にコピーされるのを防ぎます。
⑬その他のルートの+マークを押し、アプリと連携するオペレーションからスプレッドシートを選択して、以下設定を行い、テスト・保存します。
・アクション:シート(タブ)を削除する
・スプレッドシートID:事前に用意した加工用のスプレッドシートを候補から選択します。
・シートID:⑦でコピーしたシートから取得したシートIDを{{シートID}}のように埋め込みます。
このようにすることで、すべてのリマインドが終わったらコピーした不要なシートを削除し、シートが無限にコピーされるのを防ぎます。
プロセス詳細

アプリトリガー
新しいメッセージがチャンネルに投稿されたら

アプリと連携する
シート(タブ)をコピーする

アプリと連携する
セルに値を入力
待機する
6時間待機

アプリと連携する
会話のスレッド内容を取得

アプリと連携する
セルに値を入力

アプリと連携する
シート(タブ)をコピーする

アプリと連携する
数式を繰り返す

データベースを操作する
複数のレコードを取得する(最大10件)
コマンドオペレーション
同じ処理を繰り返す

アプリと連携する
スレッドにメッセージを送る
↑「同じ処理を繰り返す」にループバックします

アプリと連携する
シート(タブ)を削除する

アプリと連携する
シート(タブ)を削除する