Javascript 谷歌硬盘/电子表格-在子文件夹中修改文件时发送电子邮件通知
我已经设置了一个谷歌驱动器文件夹结构,用于处理两个级别的子文件夹。e、 g 主文件夹 -区域1 ---排除区 -区域2 ---排除区 每次修改文件时,我都需要一封电子邮件通知,以确保其他用户拥有最新的数据。我在网上找到了一个脚本,它大部分都可以工作,但我需要它能够在子文件夹中检查该脚本没有做的修改。任何帮助都将不胜感激。谢谢你,阿曼达Javascript 谷歌硬盘/电子表格-在子文件夹中修改文件时发送电子邮件通知,javascript,google-drive-api,email,Javascript,Google Drive Api,Email,我已经设置了一个谷歌驱动器文件夹结构,用于处理两个级别的子文件夹。e、 g 主文件夹 -区域1 ---排除区 -区域2 ---排除区 每次修改文件时,我都需要一封电子邮件通知,以确保其他用户拥有最新的数据。我在网上找到了一个脚本,它大部分都可以工作,但我需要它能够在子文件夹中检查该脚本没有做的修改。任何帮助都将不胜感激。谢谢你,阿曼达 function GoogleDriveModifiedFiles(){ // Folder ID "XXXXXXXxxXXXwwerr0RSQ2ZlZms"
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的域
- 为要监视的每个资源终结点设置通知通道
我做了一些关于这个问题的研究,发现了这个。它当前不支持文件夹级别更改的通知 我不确定驱动器API是否有电子邮件通知。但是,这描述了如何使用
推送通知
,在资源更改时通知应用程序。您可以使用此功能来提高应用程序的性能。它允许您消除额外的网络,并计算轮询资源所涉及的成本,以确定资源是否已更改。无论何时监视的资源发生更改,驱动器API都会通知您的应用程序
要使用推送通知,您需要做三件事:
- 注册接收URL的域
- 为要监视的每个资源终结点设置通知通道