[英]Google script for sending email if cell value is below certain value issue
JavaScript的新手。 對於認識的人來說,這可能是非常明顯/輕松的解決方案。
嘗試編寫一個腳本,如果單元格值降至100以下並將其顏色更改為藍色,則該腳本將發送電子郵件:
我試圖通過調用一個函數來編寫它:
function sendemails() {
var emailAddress = "email@address.com";
var message = "test body";
var subject = "test subject";
MailApp.sendEmail(emailAddress, subject, message);
}
function onEdit(e) {
var range = e.range;
if(range.getValue() < 100) {
range.setBackgroundColor('blue');
}
if(range.getValue() < 100) {
sendemails()
}
}
我也嘗試過直接發送郵件:
function onEdit(e) {
var range = e.range;
if(range.getValue() < 100) {
range.setBackgroundColor('blue');
}
if(range.getValue() < 100) {
var emailAddress = "email@address.com";
var message = "test body";
var subject = "test subject";
MailApp.sendEmail(emailAddress, subject, message);
}
}
我無法工作,可能是因為我沒有正確調用該函數或錯過了明顯的事情。 單元格變為藍色,並且如果我自己運行sendemails函數,而不是由於onedit的結果,它將發送電子郵件。 我只是在努力打電話。
任何幫助或解釋將不勝感激!
謝謝
原因很簡單,Google已在開發人員指南中說明了這一點:
由於簡單觸發器會自動觸發,而無需詢問用戶授權,因此它們受到以下限制:
- 他們無法訪問需要授權的服務。 例如,簡單觸發器無法發送電子郵件,因為Gmail服務需要授權,但是簡單觸發器可以使用Language Service(匿名)翻譯短語。
請在此處查看“限制”部分。
要變通解決此問題,您可以創建一個正常的函數sendEmail()
。 可以將此功能添加為可安裝的觸發器,然后允許其調用需要授權的服務。 您可以在這里閱讀更多有關它的信息 。
發送郵件的代碼如下所示:
function sendEmail() {
var range = SpreadsheetApp.getActiveRange();
if (range.getValue() < 100){
var emailAddress = "email@example.com";
var message = "test body";
var subject = "test subject";
MailApp.sendEmail(emailAddress, subject, message);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.