15
8

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 1 year has passed since last update.

Ateam Brides Inc.Advent Calendar 2021

Day 24

30分でできる!GAS×Slackで毎週しいたけ占いの結果を届けてくれるbotを作ろう

Last updated at Posted at 2021-12-23

この記事はAteam Brides Inc. Advent Calendar 2021 24日目の記事です。本日はエイチームブライズでエンジニアをしていた @kakakaori830 が記事を書きます。

はじめに

約1年前に職種が変わって?エンジニアではなくなった私ですが、アドベントカレンダーの季節になるとやはり何かものづくりをしたくなるものです。
何を作ろうかな〜と考えたわけですが、弊社にはしいたけ占いの信者が多数在籍しています。そんな彼らのために毎週月曜に占いの結果をSlackにお届けるすbotを作ることにしました。仕事でも使っているSlackに、占いの結果が届いたら便利ですよね!

作り方

GoogleAppScriptでライブラリを読み込む

今回はSlackとの接続部分と、スクレイピング部分でライブラリを利用します。自前で作らなくてもいいので便利便利!

スクリーンショット 2021-12-23 8.27.47.png

ライブラリはここから追加します。

Slackとの連携に使うのは「SlackApp」というライブラリ。スクリプトIDの欄に

SlackApp
1on93YOYfSmV92R5q59NpKmsyWIQD8qnoLYk-gkQBI92C58SPyA2x1-bq

と入力して「検索」をクリック。IDのところが「SlackApp」になっていることを確認して「追加」を押したらライブラリの追加が完了。同じようにしてスクレイピングに使う「Parser」を追加していきます。スクリプトIDは

Parser
1Mc8BthYthXx6CoIz90-JiSzSafVnT6U3t0z_W3hLTAX5ek4w0G_EIrNw

これら二つのライブラリを追加したら準備完了。

Slack側でアプリ登録

Slackのアプリ作成ページを開いてアプリを作っていきます。まず「Create an App」をクリック。
「アプリ名(App Name)」と「利用するSlackワークスペース名(Pick a workspace to develop your app in:)」を入力し、「Create App」をクリックします。
スクリーンショット 2021-12-22 20.59.13.png
これでアプリの作成は完了!簡単だー。

パーミッションの設定

さっき作ったアプリの権限を変えていきます。
左のメニューにある「OAuth & Permissons」を選択して、「Add an OAuth Scope」をクリック。
スクリーンショット 2021-12-22 21.00.26.png

Slack botに必要な権限を追加していきます。botに最小限必要な権限はチャットへの書き込み権限「chat:write」です。「chat:write.public」はパブリックチャンネルに対して許可なく書き込める権限なので、これにしておくと作成したSlackAppをパブリックチャンネルに追加しなくても書き込みができるようになるので便利です。

botユーザーの追加

左のメニューから「App Home」を選択して、「App Display Name」で「Edit」をクリック。
スクリーンショット 2021-12-22 21.03.01.png
「botの名前(Display Name)」と、「デフォルトのユーザー名(Default username)」を入力し、「Save」をクリックします。

botのインストール

左のメニューから「Install App」を選択して、「Install to Workspace」をクリックし、Slack botをワークスペースにインストールしていきます。
スクリーンショット 2021-12-22 21.03.37.png

権限のリクエストが表示されるので、内容を確認して、「許可する」をクリックします。
画面が切り替わると「Bot User OAuth Token」が表示されるので、この文字列をコピーしておきます。これをGAS上に入力します。

GASにコードを記述していく

今回はライブラリを使うので実際に書くコードはかなり少ないです。これだけでしいたけ占いの結果を持ってきてSlackに投げられる。すごいですねー。

コード.gs
function myFunction() {
  const constellations = [
        "aries",
        "taurus",
        "gemini",
        "cancer",
        "leo",
        "virgo",
        "libra",
        "scorpio",
        "sagittarius",
        "capricorn",
        "aquarius",
        "pisces"
    ];

  const constellationsKana = [
        "【おひつじ座】",
        "【おうし座】",
        "【ふたご座】",
        "【かに座】",
        "【しし座】",
        "【おとめ座】",
        "【てんびん座】",
        "【さそり座】",
        "【いて座】",
        "【やぎ座】",
        "【みずがめ座】",
        "【うお座】"
    ];

  const urlBase = "https://voguegirl.jp/horoscope/shiitake/";
  const currentDate = new Date();
  const today = currentDate.getFullYear() + toDoubleDigits(currentDate.getMonth() + 1) + toDoubleDigits(currentDate.getDate());
  const token     = "xoxb-hogehogehoge"; // ここにコピーしておいたトークンを記入
  const slackApp  = SlackApp.create(token);
  const channelId = "#general";

  // 星座ごとにデータを取得
  constellations.forEach(function(constellation, key) {
    var url     = urlBase + constellation + "/" + today + "/";
    var content = UrlFetchApp.fetch(url).getContentText("UTF8");
    var resultText  = Parser.data(content).from('<div class="a-text">').to('</div>').build();
    var titleInfo   = Parser.data(content).from('<div class="o-shiitake-detail__title-area">').to('<div class="a-illust-caption">').build();
    var resultImage = Parser.data(titleInfo).from('data-src="').to('" alt').build();
   
    let message = constellationsKana[key] + "のあなたは…\n\n" + resultText.trim()
    slackApp.postMessage(channelId, message);

  }) ;   
}

/*
 * 1桁の数字を2桁にする
 */
var toDoubleDigits = function(num) {
  num += "";
  if (num.length === 1) {
    num = "0" + num;
  }
 return num;     
};

定期実行の登録

ここまできたらあとはGASのスケジュールを登録して毎週月曜の好きな時間に動くようにすれば完了!

やってみた

はい、実行!

スクリーンショット 2021-12-23 8.21.46.png

ジャーン!
無事にSlackの#generalにしいたけ占いの結果が送られてきました。
これで弊社のしいたけ占い好き社員も安心して働くことができるようになりそうです。

最後に

いかがでしたか?
GoogleAppScriptもSlackも色々な機能が用意されているので非常に簡単にさまざまなbotが作れそうです。本当に簡単にが実装できましたね。私自身、これを作るのは30分かからずできちゃいました!
皆さんもぜひ自分好みのbotを作ってみてくださいねー!!

Ateam Brides Inc. Advent Calendar 2021の最後は @kamatari1377 がなにか色々面白いことをしてくれるそうです。お楽しみに!

15
8
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
15
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?