4
6

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.

Slack投稿をスプレッドシートへ転記 GAS編

Last updated at Posted at 2022-12-19

はじめに

株式会社コミュカル Mitzです
この記事は RPACommunityアドベントカレンダー2022 の12/20 担当分になります。
次の12/21は Saori Takita さんです。

ITを活用した自動化を学び合うコミュニティRPACommunityではメンバー交流用にSlackを活用します
でも無料版Slackのためメッセージ投稿は3か月で消えてしまう運命...
ということで、ひとまず退避先をスプレッドシートにしてみようと思います。
(これ、同じ悩みを持つコミュニティも多いはず)
※今回はあくまで一時的な対策として非常に簡易的な方法を実施します。なのでまた別の手段に変更するかも。

今回やったこと/必要なもの

やったこと
Slack投稿➡Googleスプレッドシートに投稿内容を転記

必要なもの
対象Slackのアカウント(権限)
対象Slackのチャンネル(メッセージ投稿元)
Googleアカウント
Googleスプレッドシート(メッセージ投稿先)

実施した流れ

①SlackにOutgoing Webhook を入れる

最初に補足事項
今回使用するOutgoing WebhookはSlackのカスタムインテグレーション機能に当たります。Slackではカスタムインテグレーションではなくアプリで作成することを推奨していますのでご注意ください。ですが今回は手っ取り早くカスタムインテグレーションで実装します。
(⇩画像)Slackではアプリがおすすめされてます
000.png

①-1 Slack(PCアプリ)にて

「管理と設定」➡「アプリを管理する」
001.png

①-2 ブラウザオープン/検索

ブラウザにSlack管理画面が開く➡「検索」
002.png

①-3 対象を検索

「Webhook」で検索 ➡「Outgoing Webhook」を選択
003.png

①-4 Slackに追加

004.png

①-5 インテグレーションの追加

Outgoing Webhook インテグレーションの追加
005.png

注意
こんな感じ⇩で、もしアプリが上限に達しているとの通知が返ってきてしまったら、不要なアプリを削除しましょう。(Slackの無償版・有償版によりますが、アプリ数に制限が...)
005a.png

①-6 インストール完了

006.png

①-7 対象チャンネル選択&トークン値をメモ

007.png

【注意】後程 Outgoing Webhook の設定を行うのでこの画面は閉じないように。

②スプレッドシートでGASを作成

②-1 スプレッドシートを用意

Slack投稿を格納するスプレッドシートを用意 ➡ シート名も分かりやすいものに
008.png

②-2 GAS(Google App Script)を開く

009.png

010.png

②-3 コードを記載

011.png

サンプルコートで修正する箇所は
シート名
 ➡ ②-1 で設定したシート名
トークン値
 ➡ ①-7 でメモしておいたトークン値
※⇩のサンプルコードをご使用ください

サンプルコード
function doPost(e) {
    // Googleスプレッドシート側とSlack側の情報指定
    const SHEET = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート名'); // ← スプレッドシートのシート名を指定
    const TOKEN = 'トークン値' //  Outgoing Webhook のトークン値を指定

    // SlackGoogleスプレッドシートに投稿データを追加
    if (TOKEN == e.parameter.token){
        const DATE = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/MM/dd HH:mm')
        const USER = e.parameter.user_name
        const TEXT = e.parameter.text
        const DATA = [DATE, USER, TEXT]
        SHEET.appendRow(DATA)
    }
    return
}

②-4 デプロイ実行

デプロイボタン押下
012.png
設定➡ウェブアプリを選択
013.png
説明文を記入
実行ユーザーは自分
アクセスユーザーは全員
014.png
デプロイ実行
015.png
アクセスを承認
016.png
対象のGoogleアカウントを選択
017.png
許可(Allow)
018.png

②-5 webアプリURLをメモ

019.png

③Outgoing Webhookの設定

③-1 webアプリURLを設定

②-5 でメモしたwebアプリURLを「URL」箇所に貼り付け
020.png

③-2 設定を保存(完了)

021.png

結果

Slack投稿
022.png
スプレッドシートに転記
023.png

最後に

今回は手っ取り早くSlackインテグレーションを使用しましたが、アプリ推奨との事なので本来であればそちらの手段を選びたいですね。
そして、GASコードもほぼ工夫無し(説明も無し)ですので、いずれバージョンアップさせようかと思います。

4
6
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
4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?