2016-12-01 9 views
1

2レベルのサブフォルダで作業するためのGoogleドライブフォルダ構造を設定しました。例えばGoogleドライブ/スプレッドシート - サブフォルダ内でファイルが変更されたときのメール通知

メインフォルダ

-Area 1

---除外エリア

-Area 2

---除外エリア

私は毎時間A電子メール通知を必要としますファイルは、他のユーザーが最新のデータを最新に保つように変更されます。私は主に動作するスクリプトをオンラインで見つけましたが、このスクリプトが行わない変更をサブフォルダ内でチェックできるようにする必要があります。どんな助けもありがとう。ありがとう、Amanda

function GoogleDriveModifiedFiles(){ 

// Folder ID "XXXXXXXxxXXXwwerr0RSQ2ZlZms" of the folder to monitor for changes 
    var folderID = '"' + "0Bwz931NfDj3HUnhTVXBuc1lqMTg" + '"'; 

// Email Configuration 
var emailFromName ="Work Google Drive (Do Not Reply)"; 
var emailSubject = "Work Google Drive content has been modified"; 
var emailBody = "<br>You are receiving this email because a folder/file shared with you on Google Drive has been modified, click on the link to view new content<br>" 
var emailFooter = "Any questions please contact [email protected]"; 

var folderSearch = folderID + " " + "in parents"; 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getActiveSheet(); 
var email = sheet.getRange("E1").getValue(); 
var timezone = ss.getSpreadsheetTimeZone(); 
var today  = new Date(); 

var oneDayAgo = new Date(today.getTime() - 1 * 60 * 1000); 

var startTime = oneDayAgo.toISOString(); 

var search = '(trashed = true or trashed = false) and '+ folderSearch +' and (modifiedDate > "' + startTime + '")'; 

var files = DriveApp.searchFiles(search); 

var row = "", count=0; 

while(files.hasNext()) { 

var file = files.next(); 
var fileName = file.getName(); 
var fileURL = file.getUrl(); 
var lastUpdated = Utilities.formatDate(file.getLastUpdated(), timezone, "dd-MM-yyyy HH:mm"); 
var dateCreated = Utilities.formatDate(file.getDateCreated(), timezone, "dd-MM-yyyy HH:mm") 

row += "<li>" + lastUpdated + " <a href='" + fileURL + "'>" + fileName + "</a></li>"; 

sheet.appendRow([dateCreated, lastUpdated, fileName, fileURL]); 

count++; 
} 

if (row !== "") { 
row = "<p>" + count + " file(s) changed:</p><ol>" + row + "</ol>"; 
row += emailBody+"<br>" + "<br><small> "+emailFooter+" </a>.</small>";  
MailApp.sendEmail(email, emailSubject, "", {name: emailFromName, htmlBody: row}); 
} 
} 

答えて

0

ドライブAPIにメール通知があるかどうかわかりません。ただし、documentには、リソースが変更されたときにアプリケーションに通知するpush notificationsの使用方法が記載されています。この機能を使用して、アプリケーションのパフォーマンスを向上させることができます。余分なネットワークを排除し、リソースのポーリングに伴うコストを計算して、変更されたかどうかを判断することができます。監視対象のリソースが変更されるたびに、ドライブAPIがアプリケーションに通知します。

プッシュ通知を使用するには、次の3つ実行する必要があります。

  • があなたの受信URLのドメインを登録します。たとえば、

あなたの受信URLとしてhttps://exampledomain.com/notificationsを使用する場合、あなたはhttps://exampledomain.comを登録する必要があります。 *受信URLまたは "Webhook"コールバック受信者を設定します。

これは、リソースが変更されたときにトリガーされるAPI通知メッセージを処理するHTTPSサーバーです。

  • 監視するリソースエンドポイントごとに通知チャネルを設定します。

チャネルは、通知メッセージのルーティング情報を指定します。チャネル設定の一環として、通知を受け取る特定のURLを指定します。チャンネルのリソースが変更されるたびに、ドライブAPIは通知メッセージをPOSTリクエストとしてそのURLに送信します。このリンクをたどって、ファイルへの変更を追跡する必要がGoogleドライブアプリの

https://developers.google.com/drive/v3/web/manage-changes

私はこの問題試合いくつかの研究を行なったし、このFeature requestを見つけました。現在、フォルダレベルの変更に関する通知はサポートされていません。

関連する問題