• トップ
  • ブログ一覧
  • GASでスプレッドシート上のテキストをSlackに送信する
  • GASでスプレッドシート上のテキストをSlackに送信する

    はっと(エンジニア)はっと(エンジニア)
    2023.07.07

    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送信しています。

    これでメソッド実行時にSlackにメッセージが届くようになります。
    実行をクリックしてみましょう。

     

    届きました!
    これで送信機能は実装できましたね。

    指定した時間にメッセージが届くようにする

    最後にメッセージを送信する時間を指定します。
    画面左の時計アイコンをクリックしてください。

    右下の「トリガーを追加」をクリックし、設定を以下のようにしてください。
    ポイントは「実行する関数を選択」にpostToSlackメソッドが指定されていて、時刻で「午前9時〜10時」が指定されている点です。
    これで「午前9時〜10時」の間にpostToSlackメソッドが自動実行され、Slack上にメッセージが届くようになります。
    保存をクリックし完了です。

    まとめ

    今回はスプレッドシートとSlack連携の一部をご紹介させていただきました!
    GASは簡単に便利機能が実装できるので気になった方はぜひチェックしてみてください!

    ライトコードでは、エンジニアを積極採用中!

    ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。

    採用情報へ

    はっと(エンジニア)

    はっと(エンジニア)

    おすすめ記事

    エンジニア大募集中!

    ライトコードでは、エンジニアを積極採用中です。

    特に、WEBエンジニアとモバイルエンジニアは是非ご応募お待ちしております!

    また、フリーランスエンジニア様も大募集中です。

    background