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

More than 1 year has passed since last update.

Google Apps ScriptAdvent Calendar 2023

Day 10

チームで編集しているファイルの更新状況を毎日教えてほしいと思って書いたGAS

Posted at

はいこんにちは、こんなケース無いですか?

共同編集しているファイルの更新状況を知りたい、けどGoogleドライブ見に行くの面倒くさい

指定した任意のGoogleドライブ内のファイルの最終更新時刻を取得してメール通知すれば万事解決ですね!

下準備

  1. searchfolderIDという名前のシートのA1セルに任意のGoogleドライブのidを入力。
  2. 結果を入力するresultという名前のシートを準備。

てなわけで、はいコード

  1. "このスプレッドシートのA1セルのUrlを取得して貼ろう!"

  2. "送信したいメールアドレス"

この二つは任意に書き換えてください。

function getFileListInFolder_yesterday() {
  const ss = SpreadsheetApp.getActive();
  const folderIDsheet = ss.getSheetByName("searchfolderID");
  const resultsheet = ss.getSheetByName("result");

  const folder_id = folderIDsheet.getRange(1,1).getValue();
  const folder = DriveApp.getFolderById(folder_id);
  const files = folder.getFiles();
  const list = [];    

  while(files.hasNext()) {
    const buff = files.next();
    list.push([buff.getName(), Utilities.formatDate(buff.getLastUpdated(), 'Asia/Tokyo', 'yyyy/MM/dd hh:mm:ss'),buff.getUrl()]);
  };

  const date = new Date();
  const today = Utilities.formatDate(date, 'Asia/Tokyo', 'yyyy/MM/dd 00:00:00');
  const day = date.getDate();
  date.setDate(day-1);
  const yesterday =  Utilities.formatDate(date, 'Asia/Tokyo', 'yyyy/MM/dd 00:00:00');
  
  const todayData = list.filter(x => x[1] >= yesterday);
  console.log(list);
  console.log(list.length);
  
  const range = resultsheet.getRange(1,1,list.length,list[0].length);

   // 対象の範囲にまとめて書き出します
  range.setValues(list);


  const body = ""

  const ssUrl = "このスプレッドシートのA1セルのUrlを取得して貼ろう!"

   // メール本文のHTMLを構築
  let htmlBody = "<html><body><h1>スプレッドシートデータ</h1><table border='1' cellspacing='0' cellpadding='5'>";
  
  // ヘッダ行を追加
  htmlBody += "<tr>";
  for (let i = 0; i < list[0].length; i++) {
    htmlBody += "<th>" + list[0][i] + "</th>";
  }
  htmlBody += "</tr>";
  
  // データ行を追加
  for (let i = 1; i < list.length; i++) {
    htmlBody += "<tr>";
    for (let j = 0; j < list[i].length; j++) {
      htmlBody += "<td>" + list[i][j] + "</td>";
    }
    htmlBody += "</tr>";
  }
  
  htmlBody += "</table></body></html>";



  //html += `<p> ${list}</p>`;
  htmlBody += `<p><a href="${ssUrl}">スプレッドシート</a>で確認!</p>`;
  GmailApp.sendEmail("送信したいメールアドレス","昨日からの更新ファイルとか", body, {htmlBody: htmlBody});
  
  }

こんな感じのGメールが届きます

image.png

これを動かすと、任意のGoogleドライブのファイルリストを作成してくれた上に最終更新日を教えてくれます。
適度な時間ベースのトリガーをつけておくと、メール通知してくれて変更があったファイルだけを開いて確認すればよくなりますね!

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