【问题标题】:Google Apps script - syntax of passed in rangesGoogle Apps 脚本 - 传入范围的语法
【发布时间】:2019-11-18 16:36:02
【问题描述】:

我使用 Google Apps 脚本来分析 Google 表格中的一些数据。 我想获取从股票代码“TickerRange”列表中提取的一组股票代码“Tickers”的第一个购买日期和最后一个销售日期。日期在“dateRange”中。 仅当在“includeRange”中选中相关复选框时,才应将代码包含在计算中。 经过大量尝试,我认为该行存在语法问题:

if (TickerRange[i] == Tickers[j]) {

我也试过了

if (TickerRange[i].value == Tickers[j].value) {

但它仍然不起作用。 完整代码如下:

function TickersDates(Tickers,TickerRange,dateRange,includeRange) {  
    var Datesoutput = new Array(1);
    // Compute StartDate and EndDate for the current tickers
    var dateTemp = new Date(1900, 01, 01);
    var minDate= new Date(2900, 01, 01);
    var maxDate= new Date(1900, 01, 01);
    for(var j=0, jLen=Tickers.length; j<jLen; j++) {
        if (includeRange[j]=="true" && Tickers[j]!="") {
            for(var i=0, iLen=dateRange.length; i<iLen; i++) {
                dateTemp = new Date(dateRange[i]);
                if (isValidDate(dateTemp)){
                    if (TickerRange[i] == Tickers[j]) {
                        minDate = Math.min(dateTemp.valueOf(), minDate.valueOf());
                        maxDate = Math.max(dateTemp.valueOf(), maxDate.valueOf());
                    }
                } 
            }   
        }           
    }    
    var StartDate = new Date(minDate)  
    var EndDate = new Date(maxDate)  
    Datesoutput[0]=StartDate
    Datesoutput[1]=EndDate
    return Datesoutput;  
}

【问题讨论】:

  • dateRange 是 Range 还是数组值?
  • dateRange 是我传入的一系列单元格。此函数的典型调用来自一个单元格:=TickersDates(A1:A7,C:C,D:D,B1:B7)跨度>
  • 好吧dateTemp = new Date(dateRange[i]); 没有多大意义,因为您需要价值观。查看文档并阅读有关 Range.getValues();

标签: google-apps-script custom-function


【解决方案1】:

自定义函数的arguments 是一个二维数组。你应该使用

if (TickerRange[i][0] == Tickers[j][0]) {

因为无法比较对象:[]!==[]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-28
    • 2014-10-05
    • 1970-01-01
    相关资源
    最近更新 更多