🫧

ChatGPTに「スプレッドシートの変更をSlack通知する」を実装させてその記事を書いてもらう

2023/04/20に公開約2,700字

なぜ🤔

  • 担当しているプロジェクトで、デザインが頻繁に変わる
  • デザイン変更の共有漏れが起こらないために、デザイン変更管理シートをGoogleスプレッドシートで作成した
  • デザインレビュー(バグやデザイナーの意図通りに実装できていない時)もこのシートで管理している

現状の運用方法は

  1. デザインを変更した際には、デザイナーがスプレッドシートに記載する
  2. 記載した時にエンジニアにslackで伝える

↓ 課題

  • 記載した時に2の作業が漏れてしまう
  • そもそも2の作業めんどい

Googleスプレッドシートを更新した時にSlackに通知させたい

( 考えるの面倒 )

ChatGPTにやって貰えばいいか

ChatGPTに実装から記事執筆全てやらせてみた📖

以下がその内容になります


リクエストした内容

can-chat-gpt-write-blog

はじめに

SlackとGoogleスプレッドシートを連携して、スプレッドシートの変更をSlackに通知することができます。この記事では、SlackのIncoming Webhookの取得方法、SlackのチャンネルIDの取得方法、そしてGoogleスプレッドシートの特定の列に変更があった場合にSlackに通知を送る方法、Googleスプレッドシートからスクリプトエディタを開く方法を解説します。

事前準備

SlackのIncoming Webhookの取得方法

Slackにログインし、通知を受け取るチャンネルを選択します。
チャンネル設定を開き、「Apps」をクリックします。
「Build」をクリックして、Incoming Webhooksを選択します。
「Add to Slack」をクリックします。
Webhook URLが生成されるので、コピーしておきます。

SlackのチャンネルIDの取得方法

Slackにログインし、チャンネルを選択します。
チャンネル設定を開き、「More」をクリックします。
「Copy Link」を選択します。
コピーしたリンクから、チャンネルIDを取得します。例えば、リンクがhttps://example.slack.com/archives/C12345678の場合、チャンネルIDはC12345678です。

Googleスプレッドシートの特定の列に変更があった場合にSlackに通知を送る方法

1 Googleスプレッドシートを開き、「ツール」から「スクリプトエディタ」を選択します。

2 新しいスクリプトファイルを作成し、以下のコードを貼り付けます。

// スプレッドシートの編集時に呼ばれる関数
function onEdit(e) {
  // 編集されたスプレッドシートを取得
  var sheet = e.source.getActiveSheet();
  // 編集された範囲を取得
  var range = e.range;
  // 編集された行番号を取得
  var row = range.getRow();
  // 編集された列番号を取得
  var col = range.getColumn();
  // 変更を監視する列番号と行番号が1行目以外である場合
  if (col == [変更を監視する列番号] && row > 1) {
    // 変更された値を取得
    var value = range.getValue();
    // Slackに送信するメッセージを作成
    var message = sheet.getName() + "の" + col + "列の" + row + "行目が更新されました。値は「" + value + "」です。";
    // Slackに通知を送信
    sendSlackNotification(message);
  }
}

// Slackに通知を送信する関数
function sendSlackNotification(message) {
  // Incoming WebhookのURLを指定
  var webhookUrl = "[Incoming WebhookのURL]";
  // Slackに送信するオプションを設定
  var options = {
    'method': 'POST',
    'payload': JSON.stringify({
      'text': message
    })
  };
  // Slackに通知を送信
  UrlFetchApp.fetch(webhookUrl, options);
}

関数onEditはスプレッドシートの編集時に呼び出され、編集された範囲を取得して、変更を監視する列と行が1行目以外である場合は、Slackに通知を送る関数sendSlackNotificationを呼び出します。関数sendSlackNotificationはIncoming WebhookのURLを指定して、Slackに通知を送信します。

3 変更を監視する列番号を変更を監視したい列の番号に置き換えます。例えば、B列を監視したい場合は2とします。

4 Incoming WebhookのURLを先程コピーしたIncoming WebhookのURLに置き換えます。

トリガーの設定方法

スクリプトエディタで「編集」から「現在のプロジェクトのトリガー」を選択します。
「新しいトリガーを追加」をクリックします。
「実行する関数」に「onEdit」を選択します。
「イベントのソースを選択」に「スプレッドシート」を選択します。

終わりに🦋

文章書くことが苦手な私にとっては勝手に記事を書いてくれたので大変助かりました。
また、実際にコピペして動かしてみたら、ちゃんと動いたのが嬉しかったです。

(しかし、いちいちGASなどで連携せずにGoogleスプレッドシートの通知機能やSlackに直接メッセージ投げた方が効率良いのでは?ということに気づいてしまいました😓)

Discussion

ログインするとコメントできます