かずきち。の日記

サーバサイドエンジニアのつぶやき

【コードあり】リモートワークでも自動報告!GoogleAppsScriptでさくっとSlackBotを作っていく!【25行】


引用:
https://pixiin.com/work/419/

映画「A.I.」はご存知ですか?

人間と人工知能が共存する世界で人間が絶滅後でもロボットは動き続け、本来感情が芽生えるはずではないAIと人間の人工知能のあり方を考えさせられる映画です。
これには一つ、人間の大きな目標が掲げられています。

「人間が死んでも」

です。

人間の場合、遺書などで遺産相続を決めますよね?
でもぶっちゃけ私が死んだら、遺産相続はすべてコンピュータで自動で処理をすればいいわけです。
でも多くの人間がプログラムを記述できないので、「お金を払って」、いろんな作業を人にしてもらうのです。

家を掃除してくれる家政婦だって、ルンバがあったら必要ないですし、
料理を作ってくれる家政婦だって、自動調理器があれば必要はないです。
   駅に立っていた駅員だって、SuiCaがあれば駅員は必要ないです。

人間は歴史上今まで人手で行っていたものを、なんとかして自動化してきた歴史があります。
ただこれって日本人の雇用の問題と大きく関わって来るので、なんでもかんでも自動化すると雇用を奪います。
自動運転が普及したら、タクシー運転手がいなくなるのが目に見えるのはこうゆうことです。

今回はslackというビジネスチャットを自動化していきましょう


まずslackを簡単に説明するとビジネス版チャットツールです。
LINEはプライベートで「人」     をキーにしてトークルームが展開されますが…
slackは会社で    「プロジェクト」をキーにしてトークルームが展開されます。

例えば…
「2023年度予算」
「震災対策」
「事務用品補充」
などといった、用途によってトークルームが立てられると思っていただいていいです。
その中であるのはやはり報告業務です。

「2023年度予算」で言えば、「来年度の予算の見積もりの進捗」
「震災対策」   で言えば、「乾パンの賞味期限の報告」
「事務用品補充」で言えば、「ボールペンの在庫数の管理」

などです。
それを日本人の場合、「人間がやる」という意味がわからんことをしています。
ここを自動化していきます。

昨今はリモートワークが主流になったおかげで業務を人間がやっているか?機械がやっているか?なんてわからんのです。

わかりやすく言うと…
ドアマンか?

引用:
https://heapsmag.com/doorman-job-professionals

自動ドアか?

引用:
https://himeji-nabco.jp/

みたいなもので。
人間は目に見える部分はこの作業は〜〜さんがやってくれていると理解できます。
でもどうですか?
今はリモートワークで本当に人間がその作業をしているかなんてわからないのが現状です。

毎日、終業間際に上司に作業報告をするbotが動いていれば、「この部下は真面目に作業をして、毎日報告までしてくれるな」ということになります。
しかし最近はメールで報告するだけではなく、slackやLINEといった様々なコミュニケーションツールが登場しましたので、もしも自動化するなら様々なツールを自動化しなくてはいけないのです。
今回はその中でもslackを自動化しましょう

ライブラリID
1on93YOYfSmV92R5q59NpKmsyWIQD8qnoLYk-gkQBI92C58SPyA2x1-bq

こいつがGASからSlackを司るライブラリです。

こんな具合にスクリプトIDを貼りつければ準備完了です。
雪山に行く時にノーマルタイヤだとスリップするので、スタッドレスタイヤを履いたと思っていただければいいです。
このスクリプトIDというのは無数に存在していて、世界中の開発者が便利なツールをどんどん開発しています。

ではコード本体
function postSlackbot() {
  //SlackAPIで登録したボットのトークンを設定する
  let token = "自分のSlackトークン";
  //ライブラリから導入したSlackAppを定義し、トークンを設定する
  let slackApp = SlackApp.create(token);
  //Slackボットがメッセージを投稿するチャンネルを定義する
  let channelId = "Slackのチャンネルトークン";
  //Slackボットが投稿するメッセージを定義する
  let message = "SlackボットによるGASからの投稿メッセージです。"
  //SlackAppオブジェクトのpostMessageメソッドでボット投稿を行う
  slackApp.postMessage(channelId, message);

  //ここからニュース指定
  const sheet1 = SpreadsheetApp.openById("自分のスプレッドID").getSheetByName("シート名");
  const value1 = sheet1.getRange('A2:D2').getValues();
  console.log(value1[0][0]); // 日付
  console.log(value1[0][1]); // ソース
  console.log(value1[0][2]); // タイトル
  console.log(value1[0][3]); // URL

  let message2 = value1[0][0]+value1[0][1]+value1[0][2]+value1[0][3];

  //ここからセキュリティ記事に変更
  slackApp.postMessage(channelId, message2);
}

実行結果はこのとおりです。

確かにGASを通じてSlackに投稿ができました。