【EndlessReminder】タスクを完了するまでウザいくらいにしつこくリマインドし続けるプログラム

 
目次

1. この記事の想定読者

本記事は、以下の全てに当てはまる人に向けて書いています。
 
  • 仕事で Slack を利用している
    • 2023年1月現在は、Slackのみ対応しています
    • 今後 Chatwork にも対応する予定です
    • 2023年1月19日現在、Chatworkにも対応しています
    • 要望に応じて、その他のチャットツールの対応も検討します
  • チャットで定期的にタスクを依頼することがある
  • タスクの実施状況の確認・催促の仕事を効率化したい
  • 既に導入済みのツールを組み合わせて効率化できるとうれしい
 
Chatworkを使っている人・会社向けの記事は こちら です。

2. EndlessReminderとは?

EndlessReminder は、「毎月〇〇日が納期の仕事が完了したかチャットで確認する作業」や「定期的に複数人からチャットで回答を得る作業」などを自動化するプログラムです。
普通のカレンダーアプリとの違いは、EndlessReminder は、リマインド先の複数人に対し明確な返事をもらうまでウザいくらいにしつこくリマインドし続けるという機能を備えている点にあります。
 
文章による説明だけだと分かりにくいと思うので、実際の投稿のスクショを使って説明します。
例えば、あらかじめ決めたスケジュールで、図1のようなタスク依頼のメッセージをSlackに投稿するとします。
 
図1. Slackへの定期タスク依頼メッセージの投稿例
図1. Slackへの定期タスク依頼メッセージの投稿例
 
上記投稿の後、一定時間経過後にタスクの実施状況を確認し、タスクが未完了の人に対して自動的にリマインドします。
 
図2. 「完了」などのキーワードを含むテキストを投稿するまで、繰り返しリマインドを送信
図2. 「完了」などのキーワードを含むテキストを投稿するまで、繰り返しリマインドを送信
 
「完了しました」などとコメントするまで、相手の状況はお構いなしに、繰り返しリマインドし続けます。
 

補足(エンジニア向け)

EndlessReminder は、 Google Apps Script ( 以降、GAS と略します ) 上で動くプログラムです。ソースコードは GitHubのリポジトリで公開しています。ライセンスは MIT です。TypeScript で書いたコードを webpack で JavaScript ( ES2019 ) にビルドして使用します。Google製のGAS開発者向けツール clasp を使って GAS 上にデプロイ可能なように設定してあります。
 

3. 解決する課題

会社で働いていると定期的に必要になるタスクがあります。
例えば以下のようなタスクです。
 
  • 勤怠の記録(タイムカード)の確認・修正
  • 経費精算の手続き
  • 年末調整の手続き
  • 業務報告書の提出
  • etc……
 
これらのタスクについて、「〇〇日までにご対応ください!」のように Slack で連絡するとします。連絡先の人数や Slack のチャンネルの運用方法は会社によって異なりますが、ここでは、以下の状況を仮定します。
 
  • 会社の従業員数は50人
  • Slack の特定のチャンネルに全従業員が参加している
  • そのチャンネルで、全従業員に対してタスクを依頼している
 
連絡する側の人の立場で考えると、タスクの依頼は一度だけで全員が対応してくれると楽です。
しかし、通知を見逃して気づかない人、忙しいことを理由に対応を後回しにしてそのまま忘れる人……などがいるため、実際は、未対応の人に何度も繰り返しリマインドすることになります。
 
図3. 連絡業務で忙しい人の図
図3. 連絡業務で忙しい人の図
 
50人全員の中からタスク未対応の人をリストアップする作業と連絡に、合わせて10〜15分くらいかかるとします。それを 4〜5 回繰り返すと合計 1 時間ほどになります。
この時間は、本来ならもっと重要な仕事や生産的な仕事に充てることができたかも知れません。その貴重な時間を無駄にしています。
 
また、何度も繰り返しているうちに、リマインドする側もされる側も、人によってはイライラしたり気疲れしたりと、心理的負担を感じる人もいると思います。そのような負担を感じたり感じさせるタスクを削減できれば、今以上にもっと働き易い職場環境を実現できるのではないでしょうか。
 
このように、繰り返しのリマインド作業には無駄な労力・負担がかかっています。その労力・負担を軽減するために EndlessReminder を作成しました。
 

4. 使い方

まずは初期設定完了後の使い方から先に説明し、後ほど初期設定の方法を説明します。
EndlessReminder では、投稿先・投稿内容を、図4の「投稿管理用スプレッドシート」 で管理します。
 
図4. 投稿管理用スプレッドシート
図4. 投稿管理用スプレッドシート
 
「投稿管理用スプレッドシート」は、以下の 4 つのシートを含みます。
 
▼「投稿管理用スプレッドシート」に含まれるシートの一覧
  1. 「main」シート
  1. 「holiday_calendars」シート
  1. 「completion_keywords」シート
  1. 「settings」シート
 
以降では、各々のシートの役割と使い方について説明します。
「投稿管理用スプレッドシート」は、以降の説明を読んでいただければご自身で作成することも可能ですが、簡単にコピーして使えるテンプレートを用意しています。テンプレートの入手方法については、本記事の最後に記載しています。
 

4-1. 「main」シートの役割・使い方

「main」シートは、いつ、どのチャンネルで、誰に、どんな内容のメッセージを送信するかを記述するためのシートです。A〜L列の12列あります。1行目はヘッダ行です。2行目以降には、各列に表1の通りの内容を記述します。
 
表1. 「main」シートの各列の記述内容
設定項目記述内容
A列No.管理用の番号です。1以上の整数を入力します。重複は不可。
B列Yearsメッセージを投稿する「年」のリストです。西暦の数値をカンマ区切りで入力します。リスト中に「*」が含まれる場合は、毎年繰り返し投稿します。
C列Monthsメッセージを投稿する「月」のリストです。1〜12の数値をカンマ区切りで入力します。リスト中に「*」が含まれる場合は、毎月繰り返し投稿します。
D列Daysメッセージの「投稿日」または「投稿曜日」です。 「投稿日」の場合は、1〜31の整数を入力します。 「投稿曜日」の場合は、「sun」「man」「tue」「wed」「thu」「fri」「sat」といった各曜日を意味する英単語の略語を入力します。
E列Except holidays休日に投稿するか決定するフラグです。TRUEまたはFALSEを入力します。 ■D列が「投稿日」の場合 TRUEを入力すると休日には投稿しません。FALSEを入力すると休日にも投稿します。 また、TRUEの場合は、D列の値を、休日を除く「営業日」として解釈されます。例えば、D列に「1」を、E列に「TRUE」を入力すると、指定月の最初の営業日に投稿されます。 ■D列が「投稿曜日」の場合 TRUEを入力すると休日には投稿しません。 FALSEを入力すると、その曜日が休日の場合には直前の営業日に投稿します。
F列Sending timeメッセージを投稿する「時刻」です。時(hh)・分(mm)・秒(ss)を「:」区切りで入力します(hh:mm:ssという形式で入力します)。分(mm)・秒(ss)は省略可能です。例えば、E列に「12:00」と入力すると午後12時に投稿されます。
G列Channelメッセージの投稿先のチャンネル名(Slackの場合)またはルーム名(Chatworkの場合)を入力します。
H列Send toメッセージの送信先をカンマ区切りで入力します。Slackの場合は、「氏名」「表示名」「メンバーID」「channel」「here」などです。ここで、「メンバーID」は、Slackのユーザーのプロフィール欄の「メンバーIDをコピー」から入手可能なIDです。 Chatworkの場合は、「all」「toall」でルームの参加者全員に対してタスクを割り当てることができます。ただしその場合でも、L列の「Not remind to」に列挙した宛先は、タスクの割り当て先から除外できます。
I列Message送信するメッセージの内容です。タスクの依頼内容を記述してください。
J列Waiting minutesI列のメッセージ送信時点からK列の催促メッセージ送信までの待機時間です。
K列Reminder messageタスクを未完了の人に対して定期的に送信するメッセージ(対応催促のメッセージ)を入力してください。何も入力しない場合は、タスクの対応状況を確認せず、催促のメッセージは送信されません。
L列Not remind toH列のメッセージ送信先のうちK列の催促メッセージの送信先から除外したい人の「メンバーID」(もしくは「氏名」か「表示名」)を入力してください。 Slackの場合は、H列に「channel」を入力すると、基本的に、G列に入力したチャンネルの参加者全員を対象として、タスクを未完了の人にK列の催促メッセージを送信し続けます。しかし、例えば、L列に管理職の人の「メンバーID」を入力すると、管理職の人に対しては催促メッセージを送信しないようにできます。 Chatworkの場合は、H列に「all」を入力すると、基本的に、G列に入力したルームの参加者全員に対してタスクを割り当て、タスクを未完了に人にK列の催促メッセージを送信し続けます。しかし、例えば、L列に管理職の人の「表示名」または「Chatwork ID」を入力すると、管理職の人に対してはタスクを割り当てず、催促メッセージも送信しないようにできます。
M列disabled投稿の設定を一時的に無効化するためのフラグです。「TRUE」または「FALSE」を入力します。「TRUE」の場合は、一時的に設定が無効化され、その行に定義されているメッセージの送信を強制的に停止できます。何も入力しない場合は「FALSE(設定有効)」として解釈されます。
 

4-2. 「holiday_calendars」シートの役割・使い方

「holiday_calendars」シートは、休日を定義するシートです。1行目はヘッダ行です。A列の2行目以降にGoogleカレンダーの「カレンダーID」を入力します。「holiday_calendars」シートに入力した「カレンダーID」のカレンダーに予定が含まれている場合は、その予定のある日が休日として解釈されます。
図5においては、A2セルに「日本の祝日」カレンダーの「カレンダーID」を入力し、A3セルに独自に作成した「会社の休日」カレンダーの「カレンダーID」を入力しています。
 
図5. 「holiday_calendars」シート
図5. 「holiday_calendars」シート
 
「カレンダーID」の確認方法については、「Google」「カレンダーID」「確認方法」などのキーワードを組み合わせて検索してみてください。多くの解説記事がヒットしますので、それらを参考にしてください。
また、カレンダーの作成方法についても同様に、「Google」「新しいカレンダー」「作成」などのキーワードを組み合わせて検索すると、多くの解説記事がヒットします。そちらも参考にしてください。
 

4-3. 「completion_keywords」シートの役割・使い方

「completion_keywords」シートは、プログラムが「タスクの完了」を判定するために使用する「キーワード」を定義するシートです。1行目はヘッダ行です。A列の2行目以降に「キーワード」を入力します。Slackに投稿されたタスク依頼メッセージのスレッドに、ここに定義された「キーワード」を含むコメントを投稿することで、タスクの完了をプログラムに伝えることができます。
図6においては、「完了」「未使用」「不要」という3つのキーワードを定義しています。
 
図6. 「completion_keywords」シート
図6. 「completion_keywords」シート
 

4-4. 「settings」シートの役割・使い方

「settings」シートは、プログラムの設定値を定義するシートです。1行目はヘッダ行です。2行目以降のA列に設定可能なパラメータの名前、B列にその値を入力します。2023年1月現在、設定可能なパラメータは表2の通りです。
表2のパラメータのうち、「ACTIVE_CHAT_APP」と「SLACK_BOT_USER_OAUTH_TOKEN」は、入力必須のパラメータです。「ACTIVE_CHAT_APP」は、2023年1月現在、「slack」のみ設定可能です。「SLACK_BOT_USER_OAUTH_TOKEN」は、WorkspaceにBOT(Slack アプリ)をインストールする際に生成される「Bot User OAuth Token」の文字列です。BOT(Slackアプリ)の作成方法とWorkspaceへのインストール方法は後述します。
 
図7. 「settings」シート
図7. 「settings」シート
 
表2. 設定可能なパラメータ一覧
パラメータ名パラメータの役割設定可能な値
BOT_NAMEチャット(Slack)にメッセージを投稿するBOTの名前です。 (BOTの作成方法とSlackのWorkspaceへのインストール方法は後述します)任意の文字列を設定可能です。 初期値は「EndlessReminder」です。
ACTIVE_CHAT_APPメッセージの投稿先のチャットアプリの名前です。2023年1月現在、「slack」のみ設定可能です。
SLACK_BOT_USER_OAUTH_TOKENメッセージを投稿するBOT (Slack アプリ) の認証用トークンです。SlackのWorkspaceにBOTをインストールする際に生成される「Bot User OAuth Token」の文字列を設定します。
SLACK_ICON_EMOJIメッセージを投稿するBOTのIcon(絵文字)コードです。Slackの絵文字コードを設定可能です。「:spiral_calendar_pad:」が初期値です。
CHATWORK_API_TOKENChatwork API の API トークンです。Chatwork API の公式サイト から入手可能な「APIトークン」の文字列を設定します。
TIME_INTERVALタスク未対応の人に対応を催促するメッセージを送信する時間の間隔です。1以上の整数を設定可能です。 値の単位は「分」です。 初期値は「1440(= 24時間)」です。
TIME_INTERVAL_DECAYタスク未対応の人に対応を催促するメッセージを送信する時間の間隔を段階的に短くしていくためのパラメータです。1以上の数値を設定可能です。 例えば、「2」を設定すると、催促メッセージを送信するたびに、送信時間の間隔が 2 分 の 1 に減少します。「3」を設定すると、3分の 1 に減少します。 1は「変化なし」を意味します。 初期値は「1」です。
TIME_INTERVAL_MINタスク未対応の人に対応を催促するメッセージを送信する時間の間隔の最小値です。1以上、TIME_INTERVAL以下の整数を設定可能です。TIME_INTERVALを超す値を設定した場合は、TIME_INTERVALと同じ値が設定されたものとして解釈されます。
MAX_REPEAT_COUNTタスク未対応の人に対応を催促するメッセージを送信する回数の上限値です。0以上の整数を設定可能です。 例えば、3を設定した場合は、催促メッセージを最大 3 回まで繰り返し送信します。 0は「上限なし」を意味します。 初期値は「0」です。
OPENING_TIMEタスク未対応の人に対応を催促するメッセージを送信可能な時間の開始時刻です。00:00:00から23:59:59までの時刻を設定可能です。OPENING_TIME以前の送信時刻は、OPENING_TIMEに置換されます。 初期値は「00:00:00」です。
CLOSING_TIMEタスク未対応の人に対応を催促するメッセージを送信可能な時間の終了時刻です。OPENING_TIMEから23:59:59までの時刻を設定可能です。CLOSING_TIME以降の送信時刻は、翌日(または翌営業日)のOPENING_TIMEに置換されます。 初期値は「23:59:59」です。
DEBUG開発者向けの動作検証モードのON/OFFを設定するパラメータです。通常はOFFにして使用します。TRUE または FALSE を設定可能です。FALSEの場合は動作検証モードはOFFです。TRUEの場合は動作検証モードがONになります。 動作検証モードがOFFの場合は、翌日に送信予定のメッセージに対し、GAS上で送信用のトリガーを設定します。 動作検証モードがONの場合は、当日に送信予定のメッセージに対し、GAS上で送信用のトリガーを設定します。 初期値はFALSE( 動作検証モードOFF )です。
 

5. 初期設定

EndlessReminderの初期設定の手順は以下の通りです。
 
▼EndlessReminderの初期設定手順
  1. 「投稿管理用スプレッドシート」を作成
  1. 「投稿管理用スプレッドシート」と、EndlessReminderのプログラムを関連づけ
  1. Slackアプリを作成し、権限を設定
  1. SlackアプリをWorkspaceにインストール(会社のWorkspaceにインストール)
  1. Bot User OAuth Tokenを取得し、「settings」シートに設定
  1. Slackアプリをチャンネルに追加
  1. GASのトリガーを設定
  1. 「holiday_calendars」シートに、「会社の休日」カレンダーIDを追加
  1. 「completion_keywords」シートに、タスクの完了判定用「キーワード」を追加
  1. 「main」シートに、投稿スケジュール・投稿内容等を記述
 
1ステップ目は、これまでに説明した通りの「投稿管理用スプレッドシート」を作成するステップです。2ステップ目は、「投稿管理用スプレッドシート」とEndlessReminderのプログラムを関連づけるステップです。EndlessReminderのプログラムは、 GitHub で公開中のソースコードから生成可能です。
 
前述の通り、本記事の最後に「投稿管理用スプレッドシート」のテンプレートの入手方法を記載しています。そのテンプレートは、2ステップ目まで設定済みのものです。そのため、テンプレートを使用する前提で、2ステップ目までの説明は省略します。
 
以下では、3ステップ目以降の手順について具体的に説明します。
 

5-1. Slackアプリを作成し、権限を設定

以下の手順で、Slackにメッセージを投稿するBOT(Slackアプリ)を作成し、アプリの動作に必要な権限を設定してください。
 
まず、「 slack api > Your Apps 」 から 「 Create New App 」 をクリック。下図の選択画面が開くので 「 From Scratch 」 を選択してください。
図8. Slackアプリ作成画面
図8. Slackアプリ作成画面
 
次の選択画面で、App Name に 「 EndlessReminder 」 と入力し、 「 Pick a workspace to develop your app in 」 で会社の Workspace を選択してください。
図9. Slackアプリ作成先Workspace選択画面
図9. Slackアプリ作成先Workspace選択画面
 
次の画面に遷移後、左サイドメニューの 「 OAuth & Permissions 」 をクリックすると、下図の画面が開きます。
図10. OAuth & Permissions 画面
図10. OAuth & Permissions 画面
 
画面を下にスクロールすると 「 Scopes 」 という設定項目があります。ここの 「 Bot Token Scopes 」 の 「 Add an OAuth Scope 」 ボタンをクリックしてください。
図11. Slackアプリ権限設定前
図11. Slackアプリ権限設定前
 
以下の12種類の OAuth Scope を追加してください。
  1. channels:history
  1. channels:read
  1. chat:write
  1. chat:write.customize
  1. groups:history
  1. groups:read
  1. im:history
  1. im:read
  1. mpim:history
  1. mpim:read
  1. usergroups:read
  1. users:read
 
下図の通り設定されていることを確認してください。
図12. Slackアプリ権限設定後
図12. Slackアプリ権限設定後
 

5-2. SlackアプリをWorkspaceにインストール(会社のWorkspaceにインストール)

左サイドメニューの 「 Install App 」 をクリックすると、下図の画面に遷移します。
「 Install to Workspace 」 ボタンをクリックしてください。
図13. Slackアプリインストール画面
図13. Slackアプリインストール画面
 
すると、下図の画面に遷移します。「許可する」ボタンをクリックしてください。作成した Slack アプリが、選択した Workspace にインストールされます。
図14. Slackアプリインストール許可画面
図14. Slackアプリインストール許可画面
 
Workspace の設定によっては、アプリのインストールに管理者の許可が必要な場合があります。その場合は、 Workspace の管理者に相談してインストールしてください。
 

5-3. Bot User OAuth Tokenを取得し、「settings」シートに設定

Slackアプリをインストール後、 「 Install App 」 画面には下図の通り Bot User OAuth Token が表示されます。右側の 「 Copy 」 ボタンをクリックし、 Bot User OAuth Token をクリップボードにコピーしてください。
図15. 「Bot User OAuth Token」のコピー
図15. 「Bot User OAuth Token」のコピー
 
クリップボードにコピーした Bot User OAuth Token を 「 投稿管理用スプレッドシート 」 の「 settings 」シートの SLACK_BOT_USER_OAUTH_TOKEN に設定してください。
図16. 「settings」シートで SLACK_BOT_USER_OAUTH_TOKEN を設定
図16. 「settings」シートで SLACK_BOT_USER_OAUTH_TOKEN を設定
 

5-4. Slackアプリをチャンネルに追加

Slackの 「 test_slack_bot 」 というチャンネルが存在する場合に、 「 test_slack_bot 」 チャンネルに作成した Slack アプリをインストールするには、まずチャンネルの画面上のチャンネル名(ここでは 「 test_slack_bot 」 )をクリックし、チャンネル詳細画面を開きます。
図17. チャンネル詳細画面への導線
図17. チャンネル詳細画面への導線
 
チャンネル詳細画面の 「 インテグレーション 」 タブをクリックすると、 「 アプリを追加する 」 ボタンがあります。その 「 アプリを追加する 」 ボタンをクリックします。
図18. チャンネル詳細画面の「インテグレーション」タブ表示
図18. チャンネル詳細画面の「インテグレーション」タブ表示
 
すると、 Workspace にインストール済みのアプリ一覧からチャンネルに追加するアプリを選択する画面が開きます。 「 EndlessReminder 」 を探し、 「 追加 」 ボタンを押します。
図19. Slackアプリのチャンネルへの追加
図19. Slackアプリのチャンネルへの追加
 
チャンネルに 「 EndlessReminder 」 が追加されます。
図20. Slackアプリがチャンネルに追加されたことを確認
図20. Slackアプリがチャンネルに追加されたことを確認
 

5-5. GASのトリガーを設定

「 投稿管理用スプレッドシート 」 の 「 拡張機能 > Apps Script 」 をクリックしてください。 Apps Script のエディタの画面が開きます。
図21. Apps Script エディタ画面(EndlessReminderのコードを表示)
図21. Apps Script エディタ画面(EndlessReminderのコードを表示)
 
左サイドメニューの目覚まし時計のアイコンをクリックしてください。トリガー一覧画面に遷移します。画面右下の「トリガーを追加」ボタンをクリックしてください。
図22. トリガー一覧画面
図22. トリガー一覧画面
 
トリガー追加画面が開きます。下図の通り、毎日午後11時から午前0時の間に自動的に実行するように設定し、「保存」ボタンをクリックしてください。
図23. トリガー追加画面
図23. トリガー追加画面
 
上記「保存」ボタンをクリックすると、トリガーの設定の保存先アカウントの選択画面が開きます。アカウントを選択してください。
図24. トリガー設定保存先アカウント選択画面
図24. トリガー設定保存先アカウント選択画面
 
次に、「 EndlessReminder 」 に対して「 Google Sheets へのアクセス 」 「 Google Calendar へのアクセス 」 「外部サービスへの通信(SlackへのHTTPS通信)」 「自動実行」 の許可を与えるか確認する画面が開きます。「Allow」ボタンを押して許可してください。
図25. EndlessReminderの動作に必要な権限を許可
図25. EndlessReminderの動作に必要な権限を許可
 
「Allow」をクリックすると、下図の通りトリガーが追加されます。
図26. トリガー追加後のトリガー一覧画面
図26. トリガー追加後のトリガー一覧画面
 

5-6. 「holiday_calendars」シートに、「会社の休日」カレンダーIDを追加

テンプレートの「holiday_calendars」シートには、元々「日本の祝日」のカレンダーIDが記載されています。「日本の祝日」が勤務先の休業日の一部である場合は、「日本の祝日」のカレンダーIDは変更・削除せずに残しておいてください。逆に「日本の祝日」が勤務先の営業日の場合には、「日本の祝日」のカレンダーID(下図の青枠内の文字列)は削除してください。
図27. 「holiday_calendars」シートの初期設定
図27. 「holiday_calendars」シートの初期設定
 
「日本の祝日」の他に定休日がある場合には、新しくカレンダーを作成して定休日の予定を入力してください。下図では、「会社の休日」カレンダーを作成し、毎週土曜日と日曜日に「休日」という予定を入れています。
カレンダーに入力する予定の名称は、「休日」「休み」「定休日」など何でもよいです。カレンダーに含まれる予定は全て休日として解釈されます。注意点として、例え「営業日」と入力しても休日として解釈されますので、休日以外の予定は含めてはいけません。
図28. 新規に作成した「会社の休日」カレンダー
図28. 新規に作成した「会社の休日」カレンダー
 
上図の画面左メニューの「マイカレンダー>会社の休日」にマウスカーソルを合わせると、右側に三点リーダー(点が縦に三つ並んだボタン)が表示されます。その三点リーダーをクリックすると、下図のようなポップアップが表示されますので、「設定と共有」をクリックしてください。
図29. カレンダーの設定画面への導線
図29. カレンダーの設定画面への導線
 
すると、「会社の休日」カレンダーの設定画面が表示されます。その設定画面において下図の赤枠の箇所に「カレンダーID」が表示されています。その「カレンダーID」を「holiday_calendars」シートのA列に追加してください。
図30. 「カレンダーID」を確認
図30. 「カレンダーID」を確認
 

5-7. 「completion_keywords」シートに、タスクの完了判定用「キーワード」を追加

テンプレートの「completion_keywords」シートには、下図の通り「done」「completed」「finished」という3つのタスク完了判定用「キーワード」が記載されています。これらを削除して、代わりに「完了」というキーワードを入力してください。すると、「完了」というキーワードを含む投稿(最初の投稿への返信)をすると、タスクを完了済みの人として認識されるようになります。
図31. 「completion_keywords」シートの初期値
図31. 「completion_keywords」シートの初期値
 

5-8. 「main」シートに、投稿スケジュール・投稿内容等を記述

図3・表1を参考に、 「 投稿管理用スプレッドシート 」 の 「 main 」 シートに、投稿スケジュール・投稿内容等を記述してください。ここでは、テンプレートに元々記載されている 2行目(No.が1の行)を下表の通り置き換えるものとします。
設定項目動作確認用の記述例
A列No.1
B列Years* (←毎年繰り返し投稿するという意味の入力値です)
C列Months*(←毎月繰り返し投稿するという意味の入力値です)
D列Days1 (←当月の1日に投稿するという意味の入力値です。翌日の日付に置き換えてください)
E列Except holidaysFALSE
F列Sending time9:00
G列Channeltest_slack_bot (←EndlessReminderを追加済みのテスト用投稿チャンネル)
H列Send tochannel
I列Messageおはようございます。新しい月になりました。 先月の勤怠記録の整理を明日までにお願いします!
J列Waiting minutes1440
K列Reminder message完了しましたか?完了している場合、本スレッドで「完了しました」とお知らせください。
L列Not remind to
M列disabledFALSE
これまでの説明通りに正確に設定できていれば、D列に入力した日付の前日23:00〜24:00の間に投稿予約のプログラムが自動的に起動し、test_slack_bot チャンネル(G列に入力したチャンネル)の全参加者(H列で指定した宛先)に向けて、翌日9:00に下図の通り投稿されます。
図32. 初期設定後のメッセージ投稿
図32. 初期設定後のメッセージ投稿
 
test_slack_bot チャンネルに、「kamiya」「Bill」「Steve」の 3人 だけが参加している場合は、その 3 人に対して「完了」というキーワードを投稿するまでリマインドのメッセージ(J列のメッセージ)を 1日経過するたびに送信し続けます。
下図は、最初の投稿から 2日 経過後のスナップショットです。1日経過時点では 3人のうち誰も完了していないため、3人に対してリマインドメッセージを送信しています。その後「kamiya」が「完了しました!」と投稿すると、それ以降は「kamiya」に対してリマインドメッセージを送信していません。
図33. リマインド機能の動作確認
図33. リマインド機能の動作確認
 
以上で初期設定と動作確認は完了です。おつかれさまでした!
 

6. 「 投稿管理用スプレッドシート」のテンプレート

上述の通り「投稿管理用スプレッドシート」は自作可能で、プログラムのコードもGitHubで公開していますので、時間をかければ独自に設定も可能と思います。しかし、時間をかけずに手軽に試したいという人向けに、「投稿管理用スプレッドシート」のテンプレートを用意しています。
「投稿管理用スプレッドシート」のテンプレートは、下記リンク先のアンケートにご回答いただいた方にメールで送付いたします。2〜3分で完了する簡単なアンケートです。
 
 
本アンケートは、EndlessReminderの利用目的や、日頃から効率化・自動化したいと考えている非効率な仕事の内容について、ヒアリングさせていただくことを目的としたアンケートです。ご回答内容は、EndlessReminderの改善や追加機能開発、業務効率化・自動化関連の新規サービス開発の参考にさせていただきたいと考えています。お手数ですが、ぜひご協力をお願いいたします。
また、ご連絡先の情報は、EndlessReminderの使い方・アップデートに関するご連絡、業務効率化・自動化関連の新規サービスのリリース・使い方・アップデートに関するご連絡、それらに関連する追加のアンケートへのご協力依頼のご連絡に利用させていただきます。その他の用途には利用しません。
 

7. まとめ

タスクを完了するまで、ウザいくらいにしつこくリマインドし続ける EndlessReminder について紹介しました。
 
個人的には、初期設定に多少手間がかかる点に課題を感じていますが、継続的に何度も発生する非効率なタスクを削減することにメリットを感じていただける人には、一度だけの初期設定のハードルは乗り越えていただけるのではないかと思っています。
 
または、Zoom等で画面共有しながら初期設定をサポートすることも可能です。ご希望される方は、上記ユーザーアンケートの「その他(ご意見・ご要望等)」に、その旨の記載をお願いします。無償で対応させていただきます。
 
▼2023年2月4日追記
より多くの人に手軽に使っていただくため「投稿管理用スプレッドシート」のテンプレートを公開することにしました。「投稿管理用スプレッドシート」をクリックして、ご自身のGoogleDriveにコピーしてご利用ください。
 
ぜひ試していただき、Twitter等で感想を聞かせていただけるとうれしいです!
 
更新履歴
  • 2023年1月14日: プログラムのアップデート(「 投稿管理用スプレッドシート 」 の 「 main 」 シートに 「Waiting minutes」を追加)に合わせて本文を更新しました
  • 2023年1月19日: プログラムのアップデート(Chatwork対応)に合わせて、「main」シートと「settings」シートにChatworkを使用する際に必要な設定について記述しました
  • 2023年2月2日: 「PushyReminder」から「EndlessReminder」に改名しました
  • 2023年2月4日: プログラムのアップデート(曜日指定投稿機能追加)に合わせて、「main」シートのD列・E列の説明を更新しました。また、「投稿管理用スプレッドシート」を公開しました。