当具有复杂GoogleFinance功能的单元格发生更改时,无法使用脚本发送电子邮件

时间:2017-11-16 14:20:58

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

我在Google电子表格(Cell G4)中有一个公式:

=AVERAGE(INDEX( GoogleFinance(B4 , "all" , WORKDAY( TODAY(), -50 ) , TODAY() ) , , 3))

其中,B4 = INDEXBOM:SENSEX

我正在尝试使用以下脚本在单元格值更改时发送电子邮件:

function checkValue()    
{ 
var ss = SpreadsheetApp.getActive(); 
var sheet = ss.getSheetByName("Sheet1");
var valueToCheck = sheet.getRange("G4").getValue();

  if(valueToCheck > 10000)  
    {
      MailApp.sendEmail("xxxxxx@gmail.com", "Subject", "Context" + valueToCheck+ ".");
    }  

}

我设置了时间驱动的触发器,每小时自动运行脚本。但是,脚本不会发送电子邮件。

调试后,我发现由于上面的函数需要一些时间来计算,valueToCheck输出是一个字符串(" #REF!")而不是数字。

有没有办法解决这个问题?我已经尝试过使用Utilities.sleep函数来允许电子表格在执行脚本之前完成计算,但我没有成功。

我也尝试使用SpreadsheetApp.flush(),但它也没有帮助。

我不是程序员而且被困在这里。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

我怀疑GoogleFinance function文件中给出的以下陈述可能是原因:

  

无法通过Sheets API或Apps脚本下载或访问历史数据。如果您尝试这样做,您将看到#N / A错误代替电子表格相应单元格中的值。