【问题标题】:For loop not looping through spreadsheetFor循环不循环电子表格
【发布时间】:2021-09-16 13:35:31
【问题描述】:

我制作了一个小型搜索框来从数据表中检索值。由于某种原因,它只循环一次。这也是我第一次在谷歌表格中尝试一些东西,所以如果我想在 B 列中搜索一个字符串,那么 SEARCH_COL_IDX 应该是 1 对吗?

我放了几个记录器来检查这个过程。我确实看到了Logger.log(str)Logger.log("Check")Logger.log("Check2)。后两者只有一次,应该是多次imo。 The Logger.log(row[#])根本看不到,说明什么也找不到。

我还尝试使用if(row[SEARCH_COL_IDX] = str) { 来查看它的位置。比Logger.log(row[#]) 确实回来了,但是来自不同的行和列。我做错了什么,但我找不到它..有什么建议吗?

var SPREADSHEET_NAME = "Database";
var SEARCH_COL_IDX = 1;
var RETURN_COL_IDX= 1;

function searchStr(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var formSS = ss.getSheetByName("Userform");

  var str = formSS.getRange("d17").getValue();
  Logger.log(str);

  var values = ss.getSheetByName("Database").getDataRange().getValues();
  for (var i = 0; i < values.length; i++) {
    Logger.log("check");
    var row = values[i];
    Logger.log("check2");
    if(row[SEARCH_COL_IDX] == str) {



      formSS.getRange("d3").setValue(row[0]);
      Logger.log(row[0]);
      formSS.getRange("d5").setValue(row[1]);
      Logger.log(row[1]);
      formSS.getRange("d7").setValue(row[2]);
      Logger.log(row[2]);
      formSS.getRange("d9").setValue(row[3]);
      Logger.log(row[3]);
      formSS.getRange("d11").setValue(row[4]);
      Logger.log(row[4]);
      formSS.getRange("d13").setValue(row[5]);
      Logger.log(row[5]);


    }
    Logger.log("nothing found");
    return row[RETURN_COL_IDX];
  }

【问题讨论】:

    标签: for-loop google-apps-script


    【解决方案1】:

    您的函数在循环块的最后一行有一个返回命令。

    【讨论】:

    • 不知何故解决了我所有的问题,但仍然不明白为什么,但谢谢:-)
    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-16
    • 1970-01-01
    • 2020-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    相关资源
    最近更新 更多