Javascript 谷歌硬盘/电子表格-在子文件夹中修改文件时发送电子邮件通知

Javascript 谷歌硬盘/电子表格-在子文件夹中修改文件时发送电子邮件通知,javascript,google-drive-api,email,Javascript,Google Drive Api,Email,我已经设置了一个谷歌驱动器文件夹结构,用于处理两个级别的子文件夹。e、 g 主文件夹 -区域1 ---排除区 -区域2 ---排除区 每次修改文件时,我都需要一封电子邮件通知,以确保其他用户拥有最新的数据。我在网上找到了一个脚本,它大部分都可以工作,但我需要它能够在子文件夹中检查该脚本没有做的修改。任何帮助都将不胜感激。谢谢你,阿曼达 function GoogleDriveModifiedFiles(){ // Folder ID "XXXXXXXxxXXXwwerr0RSQ2ZlZms"

我已经设置了一个谷歌驱动器文件夹结构,用于处理两个级别的子文件夹。e、 g

主文件夹

-区域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 user@work.com";

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});
}  
}
函数GoogleDriveModifiedFiles(){
//要监视更改的文件夹的文件夹ID“XXXXXXX XXXXXWWERR0RSQ2ZLZMS”
变量folderID=“”+“0BWZ931NFDJ3HUNTVXBUC1LQMTG”+”;
//电子邮件配置
var emailFromName=“工作谷歌硬盘(不回复)”;
var emailSubject=“谷歌硬盘内容已被修改”;
var emailBody=“
您收到此电子邮件是因为在Google Drive上与您共享的文件夹/文件已被修改,请单击链接查看新内容
” var emailFooter=“如有任何问题,请联系user@work.com"; var folderSearch=folderID++(在父级中); var ss=SpreadsheetApp.getActiveSpreadsheet(); var sheet=ss.getActiveSheet(); var email=sheet.getRange(“E1”).getValue(); var timezone=ss.getSpreadsheetTimeZone(); var today=新日期(); var oneDayAgo=新日期(today.getTime()-1*60*1000); var startTime=oneDayAgo.toISOString(); 变量搜索='(trashed=true或trashed=false)和“+folderSearch+”和(modifiedDate>“+startTime+”)”; var files=DriveApp.searchFiles(搜索); var row=”“,count=0; while(files.hasNext()){ var file=files.next(); var fileName=file.getName(); var fileURL=file.getUrl(); var lastUpdated=Utilities.formatDate(文件.getLastUpdated(),时区,“dd-MM-yyy-HH:MM”); var dateCreated=Utilities.formatDate(文件.getDateCreated(),时区,“dd-MM-yyy-HH:MM”) 行+=“
  • ”+lastUpdated+”
  • ”; appendRow([dateCreated,LastUpdate,fileName,fileURL]); 计数++; } 如果(行!==“”){ row=“”+count+”文件已更改:

    “+row+”; 行+=emailBody+”
    “+”
    “+emailFooter+”; sendmail(email,emailSubject,“,{name:emailFromName,htmlBody:row}); } }
    我不确定驱动器API是否有电子邮件通知。但是,这描述了如何使用
    推送通知
    ,在资源更改时通知应用程序。您可以使用此功能来提高应用程序的性能。它允许您消除额外的网络,并计算轮询资源所涉及的成本,以确定资源是否已更改。无论何时监视的资源发生更改,驱动器API都会通知您的应用程序

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

    • 注册接收URL的域
    例如,如果您计划使用作为接收URL,则需要注册 *设置接收URL或“Webhook”回调接收器

    这是一个HTTPS服务器,用于处理资源更改时触发的API通知消息

    • 为要监视的每个资源终结点设置通知通道
    通道指定通知消息的路由信息。作为频道设置的一部分,您可以标识要接收通知的特定URL。每当通道的资源发生更改时,驱动器API都会将通知消息作为POST请求发送到该URL

    对于需要跟踪文件更改的Google Drive应用程序,请点击以下链接:


    我做了一些关于这个问题的研究,发现了这个。它当前不支持文件夹级别更改的通知

    我不确定驱动器API是否有电子邮件通知。但是,这描述了如何使用
    推送通知
    ,在资源更改时通知应用程序。您可以使用此功能来提高应用程序的性能。它允许您消除额外的网络,并计算轮询资源所涉及的成本,以确定资源是否已更改。无论何时监视的资源发生更改,驱动器API都会通知您的应用程序

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

    • 注册接收URL的域
    例如,如果您计划使用作为接收URL,则需要注册 *设置接收URL或“Webhook”回调接收器

    这是一个HTTPS服务器,用于处理资源更改时触发的API通知消息

    • 为要监视的每个资源终结点设置通知通道
    通道指定通知消息的路由信息。作为频道设置的一部分,您可以标识要接收通知的特定URL。每当通道的资源发生更改时,驱动器API都会将通知消息作为POST请求发送到该URL

    对于需要跟踪文件更改的Google Drive应用程序,请点击以下链接:

    我做了一些关于这个问题的研究,发现了这个。它当前不支持文件夹级别更改的通知