【发布时间】: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