9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

slack TimeTreeの今日の予定を自動で投稿する

Last updated at Posted at 2021-09-18

#はじめに
こちらの記事はTimeTreeというカレンダーアプリを使用することを前提として進めます。

私は大学の課題の提出締め切りをTimeTreeで管理しているのですが、携帯の通知だと見逃してしまうのでslackにリマインドさせて忘れないようにしようと思ったのがきっかけです。

#作成目的
大学がオンライン授業になり、課題の締め切りが授業によって違うため、締め切りを自動でお知らせしてもらい提出を忘れないようにするため。

#サイクル

  1. botが毎日決まった時間に課題リマインド用のチャンネルで@TimeTreeコマンドをたたく
  2. TimeTreeが今日の予定を知らせる

TimeTree Appの仕様は、ユーザーから@TimeTreeを利用したコマンドを入力してカレンダーの情報を取得します。

【予定を確認】
Slack上でTimeTreeの予定の確認ができます。
下記のコマンドをSlack上で入力してください。
@TimeTree 今日
@TimeTree 明日
@TimeTree today
@TimeTree tomorrow

#作成手順

  1. slackにTimeTreeのAppを追加する
  2. 自動投稿botを作る
  3. 投稿内容を編集する
  4. 投稿する時間を決める

###slackにTimeTreeのAppを追加する
まず追加したいワークスペース上でサイドバーから「アプリを追加する」を選択します。
APPplus.png

次にApp一覧から検索バーに"timetree"と入力し、TimeTreeのAppを検索。「追加」をクリックします。
searchTimeTreeApp.png

Appの詳細ページに飛ぶので左の「slackに追加」をクリックしてください。
slackappPlus.png

TimeTree側からslackとの連携を設定するページが表示されるので「Connect」を選択します。
timetree-connect.png

連携するカレンダーを選択。slackから予定を作成するときのラベルカラーも選択し、連携ボタンを押します。
slack-timetree-connect.png

今度はslack側からTimeTreeのAppを追加するワークスペースを聞かれるので、追加したいワークスペースを選択し、「許可する」をクリックします。
timetree-workspace-connect.png

TimeTreeから画像のようなDMが届いたら連携完了です!
timetree-message.png

###自動投稿botを作る
こちらの記事を参考にbotを作成しました。作成方法は記事内に詳しく載っているため割愛します。

またこちらの記事でGoogle Apps Script(GAS)を使ってslackのライブラリを取得し、プログラムを書いていたのですが、私自身GASをGoogleスプレッドシートからしか使ったことがなくどうやってプログラムを作るのかに困ったため、GASを使えるようにするための設定方法を書いていきます。
参考記事のところにもその際、見た記事が載っています。

  1. Google Driveを開く
  2. 適当なところで右クリック→「その他」→「アプリを追加」

    (デフォルトだとGASは入っていないとのこと)
    google-drive-plus.png
  3. Google Workspace Marcetplaceから上の検索バーに"google apps script"と入力し、インストール
    (インストール済みだとこうなります)
    search-gas.png
    gas-install.png

これでGASが使えるようになりました!
再度GoogleDriveを開き、右クリックするとGASがアプリとして追加されているのでそこからプログラムを作ることができます。
GASが追加出来たらbotを作成していきます。

###投稿内容を編集する
botが作成できたら、次はbotが@TimeTreeコマンドをたたけるようにします。
postSlackbotメソッドの投稿内容の部分を編集します。

//Slackボットが投稿するメッセージを定義する
let message = "<@TimeTreeのuserID> today"

botがメンション機能を使用するときはメンション先のuserIDを取得し、<>で囲うことでメンションができます。

TimeTreeのuserIDは以下の流れで取得できます。

  1. slackのサイドバーのAppからTimeTreeのDMを開く
  2. 上部のアイコン付きの「TimeTree」というところをクリック
    timetree-getuserID.png
  3. 一番下のメンバーIDをコピー
    (ワークスペースによって異なるかもしれないので隠しています)
    timetree-userID.png

成功したら画像のようにbotが自動で@TimeTreeコマンドをたたいてくれます。
slack-bot-success.png

投稿する時間を決める

GASのトリガーという機能を使ってプログラムの実行タイミングを決めていきます。しかし、デフォルトだと設定した時間内の間のどこかで実行という仕様になっているようです。(9:00~10:00で設定したら、60分の中のどこかで実行される)
そのため毎日決まった時刻に実行するためのプログラムを書きます。

こちらの記事を参考に、毎日9時に投稿されるようなプログラムを書きました。
時間は今の時間より後の時間でないと実行されないため、気を付けてください。

//トリガーを設定する
function setTrigger() {
 var setTime = new Date();
  setTime.setDate(setTime.getDate() + 1)
  setTime.setHours(09);
  setTime.setMinutes(00); 
  ScriptApp.newTrigger('postSlackbot').timeBased().at(setTime).create();  
}

プログラムができたら、サイドバーからGASのトリガーを開きます。
select-trigger.png

右下にある「トリガーを追加」ボタンを押して画像のように設定します。
スクリーンショット 2021-09-21 21.17.42.png

次の日、しっかりお知らせしてくれました!

実行までに1分程度かかりそうなので、少し早めにトリガーを設定してもいいかもしれないですね!
スクリーンショット 2021-09-21 21.13.52.png

#参考にさせていただいた記事

  • slackbotの作り方

  • TimeTreeをslackでメンションする

  • GASのスクリプト実行時に承認が通らない問題

  • 毎日決まった時刻にプログラムを実行する

9
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?