【问题标题】:Identify specific row based on Date [duplicate]根据日期识别特定行[重复]
【发布时间】:2020-08-08 10:51:49
【问题描述】:

这段代码的作用是根据输入(日期)识别数组的行,并返回与输入日期相关的值。

但是,这个 for 循环不起作用,因为它不遵守 if 条件并且总是返回数组的最后一行。

function viewData() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var formSS = ss.getSheetByName("Overall Cashflow"); //Data entry Sheet
  var datasheet = ss.getSheetByName("Cashflow Tracker Data"); //Data Sheet
  var data = datasheet.getDataRange().getValues();
  var date = formSS.getRange("H5").getDisplayValue();
  
  for (var i = 0; i < data.length; i++){ 
        if (data[i][0] == date) {
           break; 
        }
        var oldinflow = data[i][1];
        var oldoutflow = data[i][2]; 
  }
  

  formSS.getRange("H8").setValue(oldinflow);
  formSS.getRange("H11").setValue(oldoutflow);
}

【问题讨论】:

  • 为了更好的答案,请添加一些数据样本和相应的预期结果。
  • 谭维明你能试试我更新的答案吗?

标签: javascript datetime google-apps-script google-sheets


【解决方案1】:

您需要改为获取日期对象的 valueOf()

试试这个:

function viewData() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var formSS = ss.getSheetByName("Overall Cashflow"); //Data entry Sheet
  var datasheet = ss.getSheetByName("Cashflow Tracker Data"); //Data Sheet
  var data = datasheet.getDataRange().getValues();
  var date = formSS.getRange("H5").getValue().valueOf();
  
  for (var i = 0; i < data.length; i++){ 
        if (data[i][0].valueOf() == date) {
           break; 
        }
        var oldinflow = data[i][1];
        var oldoutflow = data[i][2]; 
  }
  

  formSS.getRange("H8").setValue(oldinflow);
  formSS.getRange("H11").setValue(oldoutflow);
}

【讨论】:

  • 没用 :(
  • == 将测试两个对象在内存中的地址。当您通过.getValue() 检索一个值并通过.getValues() 检索“相同”值时,生成的内存位置将比较为假。要将 == 与 Date 对象一起使用,您必须说 range.getValue().valueOf() == bigRange.getValues()[i][j].valueOf()
【解决方案2】:

getValues() 可能会为包含“日期”的单元格返回 Date 对象,另一方面,getDisplayValue() 将返回一个字符串。这或许可以解释为什么 (data[i][0] == date 不起作用。

为了防止又快又脏的解决方案可能已经足够好,而不是使用getValues(),而是使用getDisplayValues()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 2021-12-09
    • 2018-08-07
    • 2021-12-05
    • 2017-11-03
    • 2022-01-23
    • 1970-01-01
    相关资源
    最近更新 更多