我的腳本沒有根據計時器觸發所有電子郵件

拉吉

這是帶有腳本的谷歌表的鏈接 - https://docs.google.com/spreadsheets/d/1Qw8WefbVkS-AQXi1CcZ0z2CL-P0oNSZYqeT40oVF6go/edit#gid=0

我已將腳本設置為每分鐘觸發一次以測試是否正在發出電子郵件。腳本運行沒有錯誤,執行顯示每分鐘都在運行,但是我沒有自動收到電子郵件。

腳本的原因是在流程需要審核時提醒一方

我希望能夠不斷添加數據並重複發送電子郵件,其中它將向同一方發送有關不同流程的多封電子郵件。該腳本應該能夠每天運行並自動發送電子郵件。我將觸發器更改為每分鐘以檢查我是否會收到電子郵件,但沒有收到。請有人幫忙。

代碼:

function reminder() {
  var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
  var data = sh.getDataRange().getValues()
  var d = new Date().getTime();
  for (var i=1;i<data.length;i++){
    if (data[i][4]<=new Date(d+7*24*60*60*1000) && data[i][4]>=new Date(d+5*24*60*60*1000) && data[i][6]!=''){
      MailApp.sendEmail({to:data[i][3],
        subject: 'reminder ... week', 
        htmlBody: 'Hello '+data[i][1]+' The process for '+data[i][0]+' is due to review on '+data[i][4]+' Please review the content and contact the process team before its due date if amendments are required'
      })
      sh.getRange(i+1,7).setValue('sent')
    }
    else if (data[i][4]<=new Date(d+30*24*60*60*1000)  && data[i][4]>=new Date(d+28*24*60*60*1000)  && data[i][5]!=''){
      MailApp.sendEmail({to:data[i][3],
        subject: 'reminer ... month', 
        htmlBody: 'Hello '+data[i][1]+' The process for '+data[i][0]+' is due to review on '+data[i][4]+' Please review the content and contact the process team before its due date if amendments are required'
      })
      sh.getRange(i+1,6).setValue('sent')
    }
  }
}
蘭布里克斯

問題:

所有行的FG都是空的,因此data[i][6]!=''data[i][5]!=''將始終為false因此,代碼永遠不會進入ifelse if阻止,因此不會發送任何電子郵件。

解決方案:

我不確定發送電子郵件的條件應該是什麼,但我猜您想在兩種不同的情況下發送電子郵件:

  • Date for Next Review在當前日期之後的 5 到 7 天之間,並且列為G空。
  • Date for Next Review在當前日期之後的 28 到 30 天之間,並且列為F空。

如果是這種情況,您應該針對這兩種情況修改最後一個條件,因為您希望在列G(或F) 為空時發送電子郵件,而不是在填充時發送。

也就是說,替換這個:

if (data[i][4]<=new Date(d+7*24*60*60*1000) && data[i][4]>=new Date(d+5*24*60*60*1000) && data[i][6]!=''){

有了這個:

if (data[i][4]<=new Date(d+7*24*60*60*1000) && data[i][4]>=new Date(d+5*24*60*60*1000) && data[i][6]==''){

和這個:

else if (data[i][4]<=new Date(d+30*24*60*60*1000)  && data[i][4]>=new Date(d+28*24*60*60*1000)  && data[i][5]!=''){

有了這個:

else if (data[i][4]<=new Date(d+30*24*60*60*1000)  && data[i][4]>=new Date(d+28*24*60*60*1000)  && data[i][5]==''){

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Google Apps 腳本:發送 docx 電子郵件附件

在沒有 Firebase 身份驗證的情況下驗證電子郵件 - Kotlin

Apps 腳本:根據不同列中指定的日期發送 html 電子郵件

ngOnChanges 根本沒有在我的組件上觸發

Spring Boot 電子郵件發送錯誤所有配置都已正確完成仍有問題

我想從連續發送幾行信息的腳本中實時獲取所有返回

WordPress插件在網站關閉時向特定電子郵件地址發送電子郵件?

在 SuiteScript 中發送帶有正確回复的案例回復電子郵件

Google 應用程序腳本 - 通過單擊鏈接或使用彈出窗口每行發送一封電子郵件?

如何在發送電子郵件的 Google 應用腳本的 html 服務中設置背景圖像?

腳本在運行代碼時不發送電子郵件

我如何只提取所有電子郵件條目丟失的記錄

Google Web Apps - 獲取用戶電子郵件但以所有者身份運行腳本

在 Laravel 8 中發送沒有環境變量的電子郵件

在 Laravel 5.8 中發送郵件時,有沒有辦法將郵件延遲幾秒鐘或幾分鐘?

為什麼我的帶有 onEdit 觸發器的 google 應用程序腳本沒有調用模式對話框 (html)?

在 Python 中發送帶有多個附件的電子郵件

加入來自多列的數據並從谷歌腳本發送電子郵件警報

Google App 腳本錯誤 - 無法讀取未定義的屬性“響應”並且無法發送電子郵件:沒有收件人

嘗試根據谷歌表格中的條件為觸發郵件創建腳本

如何停止在谷歌表格腳本中發送重複的電子郵件

使用 Handlebars.js 發送帶有字母和正文的電子郵件

在 google 腳本的電子郵件中獲取 1 行中的所有列數據

帶有 html 正文的 Powershell 電子郵件發件人 (htmlbody.Replace)

我正在使用模板發送帶有谷歌表格的電子郵件

用於電子郵件通知的 PowerShell 腳本

有沒有一種方法可以使用 nodemailer 向不同的人發送不同的電子郵件?

如何創建基於日期觸發電子郵件的腳本?

我可以在我的應用程序中訪問 Direct API 而不是使用 Docusign SDK 嗎?是否有任何端點可以根據收件人電子郵件 ID 或姓名獲取信封?