javascript - 将 IndexOf 与日期和谷歌表格一起使用

标签 javascript datetime google-apps-script indexof

我正在尝试使用 .indexOf() 来查找哪一列包含从 Google 工作表上的另一个选项卡中提取的日期。一张名为Main,另一张名为Data,代码如下

function FindDate() {
     var ss = SpreadsheetApp.getActiveSpreadsheet();
     var ssProgram = ss.getSheetByName("Main");
     var range = ssProgram.getRange(2,3); 
     var programDate = range.getValue();

     var ssUpcoming = ss.getSheetByName("Data");
     var dateRange = ssUpcoming.getRange(1, 1, 1, ssUpcoming.getLastColumn());
     var HeaderFields = dateRange.getValues();

     Logger.log(HeaderFields[0]);
     Logger.log(HeaderFields[0].indexOf(programDate));


  Browser.msgBox('Greetings', "Done", Browser.Buttons.OK);

}

所有日期都是唯一的,因此应该只返回 1 个值。我通过查看数组知道日期在以下格式中“Sat Nov 09 23:00:00 GMT-08:00 2019”我只对相同的日期感兴趣,其余的可以不确定如何搜索在索引的这一部分?

我的想法是以某种方式在正确的格式中获取搜索日期或使用 .map 更改数组中的日期格式。有没有更简单的方法。

谢谢

这是一个示例文件的副本

https://docs.google.com/spreadsheets/d/15ugbvEJ1-ot0G0EKQcL9SbZhr9KKJ8E2G9CX1nm8CAM/copy

最佳答案

  • 您想使用 indexOfHeaderFields[0] 中检索与 programDate 相同的元素的索引。<
  • 您想知道当前脚本问题的原因。
  • 您想使用 Google Apps 脚本实现这一目标。

如果我的理解是正确的,这个答案怎么样?请将此视为几个可能的答案之一。

如果“B1:P1”单元格的值中每个值都只有一个,下面的修改如何?

修改点:

在您的脚本中,使用了日期对象,因为当通过 getValue()getValues() 检索日期时,检索到的值就是日期对象。由此,HeaderFields[0].indexOf(programDate) 始终为 -1

当你的脚本修改后,下面的修改怎么样?

模式一:

在此模式中,日期由 getDisplayValue()getDisplayValues() 检索为字符串。

修改后的脚本:

从:
var programDate = range.getValue();
至:
var programDate = range.getDisplayValue();

从:
var HeaderFields = dateRange.getValues();
至:
var HeaderFields = dateRange.getDisplayValues();

模式二:

在此模式中,日期作为日期对象检索,indexOf 用于将日期对象转换为 unix 时间或 ISO8601 字符串数据。

修改后的脚本:

从:
Logger.log(HeaderFields[0].indexOf(programDate));
至:
Logger.log(HeaderFields[0].map(function(e) {return e instanceof Date ? e.getTime() : e}).indexOf(programDate.getTime()));

从:
Logger.log(HeaderFields[0].indexOf(programDate));
至:
Logger.log(HeaderFields[0].map(function(e) {return e instanceof Date ? e.toISOString() : e}).indexOf(programDate.toISOString()));

注意事项:

  • 在上述修改中,所有结果都是1

引用资料:

如果我误解了您的问题并且这不是您想要的方向,我深表歉意。

关于javascript - 将 IndexOf 与日期和谷歌表格一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59121830/

相关文章:

datetime - 检查 LocalDateTime 是否在时间范围内

c++ - 如何使用 std::chrono 调用本地时间和本地时间加 X 小时

c++ - c++ 中是否有任何日期时间模块

google-apps-script - 如何修复错误 'API call to bigquery.jobs.query failed with error: Encountered " "FROM" "from "“at .... 期待 : ")"'

javascript - 在 Google Apps 脚本中为电子表格应用模式对话框捕获 onClose 事件

javascript - 如何在图表js圆环图中添加华氏度符号

javascript - ES6 Promise 自动后处理/克隆结果

google-apps-script - 如何设计 Google Workspace Marketplace Addon 的样式?

javascript - Gatsby 构建图像时 Node JS 崩溃

Javascript将按钮添加到表中的下一行