Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在谷歌表单中,如果值为空,如何执行一系列搜索但跳过搜索?_Javascript_Google Sheets - Fatal编程技术网

Javascript 在谷歌表单中,如果值为空,如何执行一系列搜索但跳过搜索?

Javascript 在谷歌表单中,如果值为空,如何执行一系列搜索但跳过搜索?,javascript,google-sheets,Javascript,Google Sheets,我想搜索我的工作表中的各个列,以查找与某些单元格的匹配项。问题来自这些单元格中的一些单元格可能是空白的,因此我想跳过它并进行下一次搜索。最后,我希望它在匹配所有已填充值单元格的行上标记“find here”。到目前为止,我的剧本是 function onSearch() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Main Sheet"); var searchVal1 = sheet.g

我想搜索我的工作表中的各个列,以查找与某些单元格的匹配项。问题来自这些单元格中的一些单元格可能是空白的,因此我想跳过它并进行下一次搜索。最后,我希望它在匹配所有已填充值单元格的行上标记“find here”。到目前为止,我的剧本是

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")
    }
  }
}