我的数组中有以下值:
[8:00 AM, 9:00 AM] //result of another function
我想在这个二维数组中找到它们的值:
[
[8:00 AM],
[9:00 AM],
[10:00 AM],
[11:00 AM],
[12:00 NN],
[1:00 PM],
[2:00 PM],
[3:00 PM]
]
并更改它们的值“不可用”
数组日志是使用以下代码从 Google Sheet 获取的值:
function testRow(){
var lookDate = "Aug 28, 2019";
var ss = SpreadsheetApp.openByUrl(url);
var ts = ss.getSheetByName("Time_Select");
var checkData = ts.getRange(1, 1, 1, ts.getLastColumn()).getDisplayValues()[0];
var index = checkData.indexOf(lookDate)+1;
var timeValues = ts.getRange(2, index, ts.getLastRow()-1, 1).getValues();
Logger.log(timeValues)
/*var checkSplit = dateValues.join().split(",");
var checkMe = checkSplit.indexOf(dataDisable[1]);
var timeValues = ts.getRange(checkMe, index).getValue();*/
}
我尝试使用此代码(正如您在上面的谷歌脚本代码中看到的那样):
var checkSplit = dateValues.join().split(",");
var checkMe = checkSplit.indexOf(dataDisable[1]);
var timeValues = ts.getRange(checkMe, index).getValue();
但它给了我一个错误的值。您对如何搜索二维数组内的值然后转到其在谷歌表中的位置并将其值更改为“不可用”有任何建议或解决方案吗?预先非常感谢您的帮助。
这是我的谷歌表格的链接: https://docs.google.com/spreadsheets/d/1lEfzjG1zzJVPMN8r-OpeZm6q9_IqSwk9DNCEY-q7ozY/edit?usp=sharing
最佳答案
timeValues
的输出是字符串。如果 [8:00 AM, 9:00 AM]
的内容也是字符串,您可以通过以下方式比较它们,并在重合的情况下将相应单元格值设置为“不可用”:
function testRow(){
var lookDate = "Aug 28, 2019";
var ss = SpreadsheetApp.openByUrl(url);
var ts = ss.getSheetByName("Time_Select");
var checkData = ts.getRange(1, 1, 1, ts.getLastColumn()).getDisplayValues()[0];
var index = checkData.indexOf(lookDate)+1;
// I called your array resulting from another function 'times'
var times=['8:00 AM', '9:00 AM'];
var timeValues = ts.getRange(2, index, ts.getLastRow()-1, 1).getValues();
for(var i=0;i<times.length;i++){
for(var j=0;j<timeValues.length;j++){
if(times[i]==timeValues[j][0]){
timeValues[j][0]="Not Available"
}
}
}
ts.getRange(2, index, ts.getLastRow()-1, 1).setValues(timeValues);
}
基本上,您循环遍历两个数组,当内容一致时,您将 timeValues
的相应条目替换为“不可用”。退出循环后,您将更新的 timeValues
数组的值分配给您的范围。
关于javascript - 使用 Google Apps 脚本查找二维数组内部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57658979/