提前感謝任何可以幫助解決我的問題的人。我不是專業人士,我只是在不想再做任務時撰寫代碼。
所以我正在運行一個腳本來在我看到客戶 3 天后自動發送電子郵件。兩天前,我發現我的電子郵件沒有在正確的日期發送。所以我輸入不同的日期來查看問題是什么,代碼只是在我的谷歌表中發送任何給定日期的回復。出于某種原因,除 2022 年 5 月 31 日之外的所有日期。
所以我只等了幾天來修復它,當我回來時,代碼完全停止作業。這意味著它不再發送任何電子郵件。
我正在使用帶有時間觸發器的以下代碼,但我不明白為什么它不再起作用了。
function MailingAutoJuillet() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Juillet");
var startRow = 3;
var numRows = sheet.getLastRow()-1;
var dataRange = sheet.getRange(startRow, 1, numRows, sheet.getLastColumn());
var data = dataRange.getValues();
var EMAIL_SENT = 'EMAIL_SENT';
var NO_EMAIL = 'NO_EMAIL';
for (var i = 0; i < data.length; i) {
var row = data[i];
var date = new Date();
var sheetDate = new Date(row[2]);
Sdate = Utilities.formatDate(date,'Europe/Paris','EEE, MMM d, yyyy')
SsheetDate = Utilities.formatDate(sheetDate,'Europe/Paris','EEE, MMM d, yyyy')
if (Sdate >= SsheetDate 3){
if (row[13] != EMAIL_SENT)
if (row[13] != NO_EMAIL) {
const HTMLTemplate = HtmlService.createTemplateFromFile("HTML Mail de rappel")
const HTMLforemail = HTMLTemplate.evaluate().getContent()
var emailAddress = row[9];
var emailText = "Text";
var subject = "Text";
var option={
htmlBody:HTMLforemail
};
GmailApp.sendEmail(emailAddress,subject,emailText,option);
sheet.getRange(startRow i,14).setValue("EMAIL_SENT");
}
}
}
}
uj5u.com熱心網友回復:
嘗試使用大于運算子比較字串
您不能以這種方式比較日期
Sdate = Utilities.formatDate(date,'Europe/Paris','EEE, MMM d, yyyy')
SsheetDate = Utilities.formatDate(sheetDate,'Europe/Paris','EEE, MMM d, yyyy')
以上是字串,不能與大于運算子比較
if (Sdate >= SsheetDate 3){
查看回傳毫秒的 getTime() 或 valueOf() 方法,可以按照您希望的方式進行比較。
uj5u.com熱心網友回復:
使用函式 Logger.log() 來了解您的代碼到底在做什么。由于您沒有任何線索,我建議您開始了解每個變數的值: Logger.log("varname=",varname);
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Juillet"); 例如:Logger.log("sheet=",sheet);
另外,我不知道您的作業表到底如何,但讓我嘗試了解這里發生的事情:
var sheetDate = new Date(row[2]); //row 應該是一個陣列
但
var 行 = 資料[i]; 所以...行在這里接收資料中的值?它的資料是二維陣列嗎?
另外,檢查你的處決。它是新 IDE 左側面板上的第四個圖示
uj5u.com熱心網友回復:
你不能那樣比較日期。
SsheetDate = Utilities.formatDate(sheetDate,'Europe/Paris','EEE, MMM d, yyyy')
...將產生一個字串值,例如“Tue, Jun 7, 2022”。您不能將數字三添加到三天后的日期。您要做的就是將“2022 年 6 月 7 日星期二”與“20223 年 6 月 7 日星期二”之類的內容進行比較,它們將作為字串進行比較,而不是日期或數字。
一天是 86,400,000 毫秒。什么時候Sdate是三天或更長時間后SsheetDate,Sdate.getTime() > SsheetDate.getTime() 259200000。
有更優雅、更易于閱讀的方法來比較日期,但這些方法更復雜和/或依賴于特定的日期/時間庫。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/487912.html
標籤:javascript 电子邮件 谷歌应用脚本 谷歌表格 邮箱
上一篇:獲取子節點時的XMLNull
