前回の続きより、実装手順を公開。
実装手順についてもそこそこの量になるため記事を分割して公開予定。

仕様

特定の日時にSlackへタイピングスコア提出の案内送信

  • タイピングスコア提出フォームの作成
  • 投票結果用スプレッドシート作成
  • 特定の日時にスプレッドシートからデータを取得し、加工、Slackへ送信。取得時は過去3ヶ月分のデータを取得

今回公開する内容は

特定の日時にSlackへタイピングスコア提出の案内送信

まで。

この手順を細分化すると

  • slack api tokenの生成
  • 自動送信プログラムの作成

スコアのデータについてはスプレッドシートで管理することを想定して、
googleAppsScriptで実装。

slack api tokenの生成

そもそも api tokenって何?ってなると思いますが、
記事書く上で色々調べていたら非常にわかりやすい記事があったので、
参照してみてください。
Quiita | 一番分かりやすい OAuth の説明 @TakahikoKawasaki

またapi tokenの取得手順は下記を参考にしました。
(英語なので読むのは大変です。。。)

Quiita | Slack API 推奨Tokenについて @ykhirao

slack apiにアクセス

slack api

アプリ作成

「Create New App」を押下。

slack GAS
  1. App Nameを設定
  2. 適応するワークスペースを選択
  3. Create Appを押下
Slack GAS

scopesの設定

slack GAS

スコープ
「OAuth & Permissons」ページに遷移

Scopesのセクションまでスクロールする。

「SelectPermission Scopes」から
Send messages as {App名}

slack gas

を選択

slack GAS

その後、「Save Changes」を押下。

APIのメソッドリファレンスは下記を参照することができる。
https://api.slack.com/methods

Slackにアプリをインストール

slack GAS

1.OAuth & Permissonsのページから「Install App to Workspace」を押下

slack GAS

2.「許可する」ボタンを押下

slack gas googleAppsScript

3.下記のようなページが表示されたらapi token 生成完了

GoogleAppsScript(GAS)でプログラム作成

GASの設定についてはばーいな氏の記事を参照

ソースコードを下記に設定

function myFunction() {
  //送信メッセージ
  var mss = "タイピング提出の案内です。\n";
  mss += "0月0日に提出してください。\n";

  //送るパラメータの定義
  var payload = {
    "token" : "tokenを入力",
    "text" : mss,
    "channel" : "チャンネル名を入力"
  }

  var options = {
    "method" : "POST",
    "payload" : payload
  }

  UrlFetchApp.fetch("https://slack.com/api/chat.postMessage", options);

}
Slack GAS

実行したら無事届きました。

トリガーの設定

これでSlackとスプレッドシートの連携部分ができましたが、
特定の日時を指定してGASの送信プログラムを自動実行手順を紹介

slack GAS

1.スクリプトエディタから 編集>現在のプロジェクトのトリガー を選択

slack GAS breeze

2.下記画面になったら左下「トリガーを追加」を押下

slack GAS googleAppsScript

3.下記で設定

実行する関数を選択         →実行させたい関数を選択
イベントのソースを選択       →時間主導型
時間ベースのトリガーのタイプを選択 →月ベース
日を選択              →1日
時刻を選択             →午前9時~10時

※時間ベースは月単位から分単位ごとまで細かく設定可能。
※時刻は「1時間の間で実行するよ」という仕様。

で保存を押下で完了。

作者情報
バックエンドエンジニア。Sier企画提案営業6年。独学1年を経て営業とエンジニアの職種並行期間1年。正式にエンジニアになり1年半経ちました。社内のIT教育推進担当としても邁進中。自身の開発環境のモダン化に挑戦中。ITに生きITに死す、我が人生。 公式Twitter