GASでスプレッドシート上のテキストをSlackに送信する
IT技術
はじめに
本日はGASを使用してスプレッドシート上のテキストを指定した時間にスラックに送信する方法を解説します。
やりたいこととしては以下になります。
- 1. スプレッドシートに次の日のタスクを忘れないようにメモする
- 2. 指定した時間にslackにスプレッドシートの内容を送信する
では初めていきます!
スプレッドシート上で送信するデータを作成する
まずはスプレッドシートを新規で作成し、シート名などを任意に変更します。
次にA列の1行目に「やることリスト」と書き、その下に次の日のタスクを記載していきます。
シンプルですが、スプレッドシートに記載する内容は以上です!
GASでスプレッドシートのテキストを取得
スプレッドシートからデータを取得するメソッドを定義していきます。
スプレッドシート上のメニューバーから「拡張機能 → Apps Script」をクリックします。
開かれたApps Scriptのコード上に以下を貼り付けてください。
1// スプレッドシートからテキストデータを取得する関数
2function getSpreadsheetData() {
3 // シート名を指定し、シート情報のインスタンスを取得
4 const mySheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('本日のやること');
5 // A列の全ての行を取得し、 1次元配列に変換
6 const val = mySheet.getRange("A:A").getValues().flat() ;
7 // 空文字を除去
8 const filtered = val.filter(item => item !== "");
9 let result = ''
10 // 行ごとに改行と連番を追加(最初の行は題名のため改行のみ)
11 filtered.forEach((value, index) => {
12 if (index == 0) {
13 result += "*" + value + '*\n';
14 } else {
15 result += (index) +". " + value + '\n';
16 }
17 })
18 return result
19}
上記のメソッドでは以下のデータが返されます。
1*【やることリスト】*
21. hogeAPIのPRレビューをする
32. Graphql関連の資料を作成する
43. ○○さんに○○を共有する
SlackのWebhook URLを取得する
Slackへはwebhookを使用してデータを送信します。
webhook URLを取得するために「Incoming Webhook」を導入します。
以下URLにアクセスします。
https://w1686765412-ozb429293.slack.com/apps/A0F7XDUAZ--incoming-webhook-?tab=more_info
表示されたページでSlackに追加をクリックします。
送信したいチャンネルをクリックし、インテグレーションの追加をします。
するとWebhook URLが発行されました。
こちらのURLにスプレッドシートのデータをPOST送信するとslackのチャンネルにメッセージを送信してくれます。
ではメッセージ送信用のメソッドをApps Scriptで作成してきます。
メッセージ送信メソッドを作成
Apps Scriptの最初に定義したgetSpreadsheetDataメソッドの下に下記コードを貼り付けてください
1// Slackにメッセージを送信する関数
2function postToSlack() {
3 // Webhook URLを指定
4 const url = '取得したWebhook URL';
5 // スプレッドシートのテキストを取得
6 const text = getSpreadsheetData();
7
8 // スラックに送信するデータを作成
9 const payload = {
10 "text": text,
11 "username" : "ユーザ名てすと",
12 "icon_emoji": ":face_vomiting:",
13 };
14
15 const options = {
16 "method" : "post",
17 "contentType" : "application/json",
18 "payload" : JSON.stringify(payload)
19 };
20
21 // HTTP リクエストでPOST送信
22 UrlFetchApp.fetch(url, options);
23}
上記メソッドではスプレッドシートからデータを取得し、Webhook URLに対してデータをPOST送信しています。
届きました!
これで送信機能は実装できましたね。
指定した時間にメッセージが届くようにする
最後にメッセージを送信する時間を指定します。
画面左の時計アイコンをクリックしてください。
右下の「トリガーを追加」をクリックし、設定を以下のようにしてください。
ポイントは「実行する関数を選択」にpostToSlackメソッドが指定されていて、時刻で「午前9時〜10時」が指定されている点です。
これで「午前9時〜10時」の間にpostToSlackメソッドが自動実行され、Slack上にメッセージが届くようになります。
保存をクリックし完了です。
まとめ
今回はスプレッドシートとSlack連携の一部をご紹介させていただきました!
GASは簡単に便利機能が実装できるので気になった方はぜひチェックしてみてください!
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ
服部晋平と申します! 前職では映像業や配送業に携わっていました。 趣味は、バイクツーリングに行ったり、美味しいラーメン屋巡りです。 未経験という身で入社させていただいたので、人一倍努力して頑張っていきたいと思います!