【问题标题】:Trigger a google Sheet触发谷歌表格
【发布时间】:2021-01-09 10:08:30
【问题描述】:

按照这个脚本Google Sheet - Send Email

我改了一会儿,现在它只是循环我工作表中的每个数据,然后发送电子邮件。

问题是,如果我点击 RUN 按钮,它可以工作,我会收到电子邮件。

但如果我为该项目设置触发器,它就不起作用。触发器看起来执行没有任何错误,但没有发送任何电子邮件。

谁能解释一下原因?

这是工作代码

 function SendEmailAlerts() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2; // First row of data to process
  var numRows = 20; // Number of rows to process
  var dataRange = sheet.getRange(startRow, 1, numRows, 30)
  var data = dataRange.getValues();
  for (i in data) {
    var row = data[i];
    var Ticker = row[1]; // Second column
    var currentPrice = row[2]; // 2 column
    var firstEntryLimit = row[9]; // 9 column
    var secondEntryLimit = row[8]; // 8 column
    var emailAddress = row[11]; // 11 column
    var ratioPick = row[13]; // 13 column
    var riskRatio = row[14]; // 14 column
    var rewardRatio = row[15]; // 15 column
    var FirstTarget = row[4]; // 4 column
    var rewardRatio2 = row[16]; // 16 column
    var FirstTarget2 = row[5]; // 5 column
    var FirstStop = row[6]; // 6 column
    var message = 'Ticker : #' + Ticker + '.\nEntry Price is any price around $' + firstEntryLimit + '.\nFirst Target : $'+FirstTarget+' (Reward '+rewardRatio+').\nSecond Target : $'+FirstTarget2+' (Reward '+rewardRatio2+').\nFirst Stop : $'+FirstStop+' (Risk '+riskRatio+').\nSignal ratio : '+ratioPick+'.';
    var subject = 'Alert on ' + Ticker + '';
    if (currentPrice < firstEntryLimit){
          if (currentPrice > secondEntryLimit){
            MailApp.sendEmail(emailAddress, subject, message);
          }
      }
  }
}

我已经尝试在不同时间设置触发器this is the trigger

【问题讨论】:

    标签: google-apps-script google-sheets triggers


    【解决方案1】:

    问题在于将getActiveSheet() 与时间驱动触发器结合使用

    • 时间驱动的触发器独立于 UI,因此也独立于当前打开的工作表
    • 将使用默认工作表,该工作表可能不是您感兴趣的数据所在的工作表

    解决方案

    替换

    var sheet = SpreadsheetApp.getActiveSheet();

    通过

    var sheet = SpreadsheetApp.openById(id).getSheetByName(name);

    指定您希望脚本在其上运行的电子表格和工作表的idname

    【讨论】:

    • 不错的收获!我认为这就是问题所在。
    • 您好,感谢您的回答。我收到以下异常:在对象 SpreadsheetApp 上获取方法或属性 openById 时出现意外错误。 (第 2 行,文件“SendEmails”)代码` var sheet = SpreadsheetApp.openById("123456").getSheetByName("Alerts"); `
    • 听起来您没有正确检索id。如果您的电子表格网址类似于 https://docs.google.com/spreadsheets/d/XXX/edit#gid=1835181051,那么电子表格 id 就是 XXX 部分 - 一个 44 个字符长的字母和数字组合。
    猜你喜欢
    • 1970-01-01
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多