Javascript 将IndexOf与日期和google工作表一起使用
我正在尝试使用.indexOf()查找哪个列包含从google工作表的另一个选项卡中提取的日期。一个工作表名为Main,另一个工作表名为Data。代码如下Javascript 将IndexOf与日期和google工作表一起使用,javascript,datetime,google-apps-script,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); v
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更改数组中的日期格式。有更简单的方法吗
谢谢
这是一份示例文件的副本
- 您希望使用
从索引of
检索元素的索引,该索引与HeaderFields[0]
相同programDate
- 您想知道当前发行脚本的原因
- 您希望使用谷歌应用程序脚本实现这一点
getValue()
和getValues()
检索日期时,检索到的值就是日期对象。这样,HeaderFields[0]。indexOf(programmadate)
总是-1
修改脚本时,下面的修改如何
模式1:
在此模式中,日期作为字符串由getDisplayValue()
和getDisplayValues()
检索
修改脚本:
发件人:
致:
及
发件人:
致:
模式2:
在此模式中,日期作为日期对象检索,并且通过将日期对象转换为unix时间或ISO8601字符串数据来使用indexOf
修改脚本:
发件人:
致:
或
发件人:
致:
注:
- 在上述修改中,所有结果均为
1
如果我误解了你的问题,而这不是你想要的方向,我道歉。效果很好。。。我是新手,但你的两个答案都很清楚。Thanks@Robert哥特谢谢你的回复。我很高兴你的问题解决了。
var programDate = range.getValue();
var programDate = range.getDisplayValue();
var HeaderFields = dateRange.getValues();
var HeaderFields = dateRange.getDisplayValues();
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()));