Javascript 在谷歌表单中,如果值为空,如何执行一系列搜索但跳过搜索?
我想搜索我的工作表中的各个列,以查找与某些单元格的匹配项。问题来自这些单元格中的一些单元格可能是空白的,因此我想跳过它并进行下一次搜索。最后,我希望它在匹配所有已填充值单元格的行上标记“find here”。到目前为止,我的剧本是Javascript 在谷歌表单中,如果值为空,如何执行一系列搜索但跳过搜索?,javascript,google-sheets,Javascript,Google Sheets,我想搜索我的工作表中的各个列,以查找与某些单元格的匹配项。问题来自这些单元格中的一些单元格可能是空白的,因此我想跳过它并进行下一次搜索。最后,我希望它在匹配所有已填充值单元格的行上标记“find here”。到目前为止,我的剧本是 function onSearch() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Main Sheet"); var searchVal1 = sheet.g
function onSearch() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Main Sheet");
var searchVal1 = sheet.getRange("AE31").getValue();
var searchVal2 = sheet.getRange("AE32").getValue();
var searchVal3 = sheet.getRange("AE33").getValue();
var searchCol1 = sheet.getRange(2,6,sheet.getLastRow()).getValues();
var searchCol2 = sheet.getRange(2,7,sheet.getLastRow()).getValues();
var searchCol3 = sheet.getRange(2,7,sheet.getLastRow()).getValues();
for (var i = 0, len = searchCol1.length; i < len; i++)
for (var i = 0, len = searchCol2.length; i < len; i++)
{if (searchVal1 === "")
(searchCol2[i][0] == searchVal2)
else if (searchCol1[i][0] == searchVal1)
{if (searchCol2[i][0] == searchVal2)
{if (searchVal2 === "")
(searchCol3[i][0] == searchVal3)
else if (searchCol2[i][0] == searchVal2)
{if (searchVal3 === "")
else if (searchCol3[i][0] == searchVal3)
{sheet.getRange(i + 2, 30).setValue("found here")
函数onSearch(){
var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“主表”);
var searchVal1=sheet.getRange(“AE31”).getValue();
var searchVal2=sheet.getRange(“AE32”).getValue();
var searchVal3=sheet.getRange(“AE33”).getValue();
var searchCol1=sheet.getRange(2,6,sheet.getLastRow()).getValues();
var searchCol2=sheet.getRange(2,7,sheet.getLastRow()).getValues();
var searchCol3=sheet.getRange(2,7,sheet.getLastRow()).getValues();
for(var i=0,len=searchCol1.length;i
如果所有值都在单元格(AE31、AE32、AE33)中,则会搜索并找到正确的行,但如果我取出一个,则不会产生任何结果。
是我正在使用的数据集的一个示例。为什么
searchCol2
和searchCol3
相同
你有这个:
for (var i = 0, len = searchCol1.length; i < len; i++)
for (var i = 0, len = searchCol2.length; i < len; i++)
变量的命名很混乱。我建议用searchTerm
或searchTermAddress
代替searchVal1
,用searchRange
代替searchCol
function onSearch() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Main Sheet");
var searchVal1 = sheet.getRange("AE31").getValue();
var searchVal2 = sheet.getRange("AE32").getValue();
var searchVal3 = sheet.getRange("AE33").getValue();
var searchCol1 = sheet.getRange(2, 6, sheet.getLastRow()).getValues(); // F2:F (address)
var searchCol2 = sheet.getRange(2, 7, sheet.getLastRow()).getValues(); // G2:G (MIS)
var searchCol3 = sheet.getRange(2, 7, sheet.getLastRow()).getValues();
for (var i = 0; i < searchCol1.length; i++) {
if (
((searchVal1 == "") || (searchCol1[i][0] == searchVal1)) &&
((searchVal2 == "") || (searchCol2[i][0] == searchVal2)) &&
((searchVal3 == "") || (searchCol3[i][0] == searchVal3))
) {
sheet.getRange(i + 2, 30).setValue("found here")
}
}
}