6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ZOZOAdvent Calendar 2024

Day 21

Google Driveで管理している複数のスプレッドシートが更新されたらSlack通知する(GAS)

Last updated at Posted at 2024-12-21

概要

Google Driveのフォルダ内にある複数のスプレッドシートを1つのGoogle Apps Script(GAS)でお手軽に監視できるのかが気になり、試験的に作成してみました。
大量のスプレッドシートを監視したいけど、各々のシートに対してGASを作成するのは辛いな...という方のお役に立てるかも?

今回紹介するGASを活かすには以下条件があります。ご注意ください

  • 対象スプレッドシートを特定のGoogle Driveで管理している

全体の流れ

以下の流れで記事を進めていきます。
1.GASの作成
2.GASのトリガー設定
3.動作確認

GASの作成

GAS内で指定しているSlack Webhookは公式ドキュメントを参照し設定をしています。
※本記事では詳細な手順は割愛します。

GASのコードは以下です。
今回は15分以内に更新されたスプレッドシート名と更新者のメールアドレスを通知します。

var SLACK_WEBHOOK_URL = // Slack Webhook URLを指定

function notifyRecentChanges() {
  var folderId = //フォルダIDを指定や共有ドライブIDを指定
  var folder = DriveApp.getFolderById(folderId);

  // フォルダ内のすべてスプレッドシート情報を取得
  var files = folder.getFilesByType(MimeType.GOOGLE_SHEETS);
  var now = new Date();
  // 15分前の日時を取得
  var fifteenMinutesAgo = new Date(now.getTime() - 15 * 60 * 1000); 

  // 各ファイルの最終更新日時をチェック
  while (files.hasNext()) {
    var file = files.next();
    var lastUpdated = file.getLastUpdated();
    
    if (lastUpdated > fifteenMinutesAgo) {
      var spreadsheet = SpreadsheetApp.open(file);
      var user = Session.getActiveUser().getEmail();
      var message = {
        text: 'スプレッドシートが更新されました',
        attachments: [
          {
            title: '更新されたスプレッドシート',
            title_link: spreadsheet.getUrl(),
            text: '更新者: ' + user + '\nスプレッドシート名: ' + spreadsheet.getName(),
            color: '#36a64f'
          }
        ]
      };
      // Slack通知
      sendSlackNotification(message);
    }
  }
}

function sendSlackNotification(message) {
  var options = {
    method: 'post',
    contentType: 'application/json',
    payload: JSON.stringify(message)
  };
  
  UrlFetchApp.fetch(SLACK_WEBHOOK_URL, options);
}

使用しているAPPの公式ドキュメントは以下です。

DriveApp

SpreadsheetApp

GASのトリガー設定

15分以内に更新されたスプレッドシート名と更新者のメールアドレスを通知したいので、
GASコンソールで「トリガー」 > 「トリガーを追加」を選択し、トリガー作成をします。

スクリーンショット 2024-12-21 8.29.39.png

以上で完了です。動作確認してみます。

動作確認

今回使用している検証用スプレッドシートは以下です。
予め、特定のフォルダにまとめて格納しておきます。

スクリーンショット 2024-12-06 23.51.57.png

各々スプレッドシートを修正してみます。
※ほぼ連続で修正しました
 → Slack通知されました。

スクリーンショット 2024-12-21 8.59.02.png

今度は、sample1だけを修正してみます。
 → sample1だけがSlack通知されました。

スクリーンショット 2024-12-21 8.16.31.png

以上です。


共有ドライブや共有フォルダで管理していれば、1つのGASでスプレッドシートをお手軽に監視することができました。
トリガー設定も柔軟にできるので便利ですね。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?