このスクリプトは非常にゆっくりと実行され、15 分トリガーで常にタイムアウトします。これは基本的に、ポータル サイト (https://developers.google.com/apps-script/articles/embedding_docslist_in_sites) でドライブ フォルダーの内容を表示するために Google が持っているサンプル スクリプトですが、最初に少し追加して、実際には営業時間中にのみ実行され、新しいファイルがある場合に電子メールを送信します。ドライブには最大 10 ~ 15 個のファイルしかないので、それほど時間はかかりません。
これを行っているのは、FAX 機が受信した FAX をサーバー上のフォルダーに保存し、それを Google ドライブと同期し、それを組織内で共有してアラート メールを送信したいからです。
各ループの最後に時間を示すロガー エントリをいくつか入れましたが、ループごとに 30 秒から 2 ~ 3 分までさまざまでした。何か案は
function officeHours(){
var nowH=new Date().getHours();
var nowD=new Date().getDay();
if(nowH>18||nowH<8||nowD==6||nowD==0){return}{
var done = false;
var emaillist = "chris@ringtail.co.uk";
var myDate=new Date();
myDate.setMinutes(myDate.getMinutes()-15);
while(!done){
try{
var files = DocsList.getFolderById("0Byg20FZrPmcHUUhlOGVrZlRuM28").getFiles();
var page = SitesApp.getPageByUrl("https://sites.google.com/a/ringtail.co.uk/portal/fax-list");
var listItems = page.getListItems();
for(a in listItems){
listItems[a].deleteListItem();
}
for(i in files){
var title = "<a href=\'"+files[i].getUrl()+"\'>"+ files[i].getName() +"</a>";
var lastUpdatedinctime = files[i].getLastUpdated();
if (lastUpdatedinctime > myDate){
MailApp.sendEmail(emaillist, "New Fax", "",{htmlBody:"<br/><br/>A new fax has arrived<br/><br/><a href='"+files[i].getUrl()+"'>Click to view</a><br/><br/><a href='https://sites.google.com/a/ringtail.co.uk/portal/fax-list'>Click to see full fax list"});
}
page.addListItem([title, files[i].getType(), Utilities.formatDate(files[i].getLastUpdated(), "GMT", "yyyy-MM-dd")]);
}
done = true;
}
catch(e){
}
}
}
}