2016-12-01 100 views
1

我已經設置了一個谷歌驅動器文件夾結構,可以使用2級子文件夾工作。例如谷歌驅動器/電子表格 - 在子文件夾中修改文件時的電子郵件通知

主文件夾

- 面積1

---豁免區

- 面積2

---豁免區

我需要一個電子郵件通知的時間文件被修改以確保其他用戶必須獲得最新的數據。我在網上找到了一個主要工作的腳本,但我需要它能夠在子文件夾中檢查這個腳本沒有做的修改。任何幫助,將不勝感激。謝謝,阿曼達

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在資源更改時通知您的應用程序。您可以使用此功能來改善應用程序的性能。它允許您消除額外的網絡並計算輪詢資源所涉及的成本,以確定它們是否發生了變化。每當觀看的資源發生變化時,Drive API都會通知您的應用程序。

要使用推送通知,你需要做三件事情:

  • 註冊您的接收網址的域名。

例如,如果你打算使用https://exampledomain.com/notifications作爲接收URL,你需要註冊https://exampledomain.com *設置您的接收URL或「Webhook」回叫接收器。

這是一個HTTPS服務器,用於處理資源更改時觸發的API通知消息。

  • 爲要觀看的每個資源端點設置通知通道。

通道指定通知消息的路由信息​​。作爲頻道設置的一部分,您需要確定要接收通知的特定網址。只要通道的資源發生變化,Drive API就會將通知消息作爲POST請求發送到該URL。

對於那些需要跟蹤變化的文件,請點擊此鏈接谷歌雲端硬盤應用:https://developers.google.com/drive/v3/web/manage-changes

我做了一些研究回合這個問題,並發現此Feature request。目前它不支持文件夾級別更改的通知。