見出し画像

[簡単GASコピペ]誰かがスプレッドシートを編集したらSlackに変更通知を送る方法

スプレッドシートを共有ファイルとして複数人で編集する場合に、必要な数式を消されてしまって困った経験はないですか。そんな時にオススメなのが、変更通知を設定してしまうことです。 今回は、プログラミングに詳しくない人でも、簡単に実装できるようにファイルのコピペだけで以下のような機能が作れるようにしています。

Slackに変更通知を送る

スプレッドシートのツールから通知設定をすることはできますが、通知先がメールアドレスになっているので、すぐに気づかない場合があります。

通知を編集

そんなときにおすすめなのがSlackを連携させて、スプレッドシートの内容が変更された時にSlackに通知を送るというやり方です。

変更内容を通知

今回はスプレッドシートとSlackをGASで連携させて、 変更されたらタイムラグがないように、すぐにSlackに通知を送ると言う機能を作りたいと思います。

またSlackに単に通知を送ると言うだけであれば、すぐに実装することができますが、毎回内容をスプレッドシートまで確認しないといけなくなるので大変不便です。より効率化するために、変更された内容と該当URLのセルを取得して表示します。また削除した場合に関しても、もともと入っていた内容が何なのかを取得して、URLと一緒にSlack上で表示させるようにします。

削除した場合に、削除前の内容を取得して通知

今回の実装に関してですが、大きく2つファイルを作成してまして、1つはスプレッドシートが編集されたときに発生するイベントの関数です。もう一つはSlack通知を送るときのAPIに関する関数です。

Slack通知.gs

function sendSlack(slackText){
  var webHookUrl = "webHookURLを入力";

  var jsonData =
      {
        "text": slackText,
        "link_names": 1,
        "username": "変更通知"
         };

  var payload = JSON.stringify(jsonData);

  var options =
      {
        "method": "post",
        "contentType": "application/json",
        "payload": payload
      };

  UrlFetchApp.fetch(webHookUrl, options);
  }

変更通知.gs

function onEdit(e) { 
  var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 
  var activeSheet = activeSpreadsheet.getActiveSheet();          

  var activeCell = activeSheet.getActiveCell();    
  var notation = activeCell.getA1Notation();                    
  var newValue = activeCell.getValue(); 
  var oldValue = e.oldValue;
  var spreadsheetUrl = "https://docs.google.com/spreadsheets/d/ファイルID入力/edit#gid=0&range=";  // スプレッドシートのURL

  if(activeCell.isBlank()){
      var slackText =  "内容は削除されました:" + oldValue + " \n" + spreadsheetUrl + notation;
      sendSlack(slackText);
    }else{
      var slackText = "変更内容:" + newValue + "  \n" + spreadsheetUrl + notation;
      sendSlack(slackText);
    }
  }

上記のファイルを、GASに作成して貼り付けることで後はスプレッドシートを連携させることで、簡単にSlackに変更通知を受け取ることができます。

詳細に関しては、動画で説明していますのでまずは動画をご確認ください。

テキストベースで説明

また念の為テキストベースで、簡単な流れを説明すると

  1. Slack:WebHookアプリをインストール

  2. Slack:URLを発行

  3. スプレッドシート:AppScript作成

  4. AppScript:ファイル貼り付け

  5. AppScript:トリガー設定

  6. AppScript:スプレッドシートの連携承認

という流れになります。

1.Slack:WebHookアプリをインストール

まずはSlackでWebHookをインストールします。

Appをクリック
Incoming WebHooksを追加
Slackに追加
チャンネル投稿先を選択

2.Slack:URLを発行

URLは後で使いますので、この画面は開いておくようにお願いします。

URLをコピペ

3.スプレッドシート:AppScript作成

Slackでの作業はこちらで終わりです。次はスプレッドシートでの作業に入っていきましょう。

メニューからAppsScriptをクリック

4.AppScript:ファイル貼り付け

すでに公開しているコードをこちらに貼り付けてください。

変更通知.gs
Slack通知.gs

5.AppScript:トリガー設定

トリガーを設定します。

イベントの種類を選択「編集時」に変更

6.AppScript:スプレッドシートの連携承認

プログラミングを実行すると権限の確認が求められますので承認をお願いします。

権限を確認

ここまでテキストで必要なところを抜粋して記入していますが、 内容的には動画を見ていただいた方がより理解できるかと思いますので、もしよければお時間がある時に動画をご確認ください。

今回は、スプレッドシートとSlackを連携させて、編集通知を取得すると言うことをやってみました。 もしGASについて、詳しい内容を知りたい方は、基礎講座に関するマガジンも発行していますのでご覧いただけますと幸いです。

今後も制作していきたいと思いますので、もしよろしければフォローをよろしくお願いいたします。

この記事が気に入ったらサポートをしてみませんか?