【问题标题】:Returning range of cells based on user input根据用户输入返回单元格范围
【发布时间】:2015-09-13 18:50:31
【问题描述】:

我有一个脚本,它根据开始时间和停止时间查找学生的教师列表。它结合了 Google 表格基于单元格的公式和 Google 脚本。

在电子表格中,我有一个数据库表 - db - 这是一个按列排列的学生及其教师的静态列表。第二张表 - tchrLookup - 使用数据验证和 INDEX - MATCH 搜索将数据从数据库中提取到查找中。

脚本分析查找页面以(最终)为搜索中匹配的教师构建电子邮件通知。我的数组都正确返回,除了最后一个。我不知道我的逻辑哪里出了问题。

脚本

  function findTchr() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var ss = sheet.getSheetByName('tchrLookup');

  // Loop through each row and get the teachers assigned as an array
  var range = ss.getRange(2, 2, ss.getLastRow()-1, ss.getLastColumn());
  Logger.log(range.getValues());

  var cells = range.getValues();
  for(i=0;i<cells.length;i++) {

    // Get the start and stop values for each row
    var start = cells[i][0];
    var stop = cells[i][1];

    // Determine the number of columns to return
    var tchrsToGet = stop-start+1;
    Logger.log("Start: " + start + ", Stop: " + stop);
    Logger.log("# of cols to get: " + tchrsToGet);

    // Return teachers based on start/stop time
    var tchrs = ss.getRange(2, start+3, 1, tchrsToGet);
    Logger.log(tchrs.getValues().toString());
  }
}

这是运行脚本后的日志文件截图。

您可以在顶部看到原始值数组。最后的日志条目错误地返回了第三位老师,我不知道为什么。我有一个具有编辑权限的 test spreadsheet,因此您可以看到整个事情是如何协同工作的。

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    第 22 行:

    var tchrs = ss.getRange(2, start+3, 1, tchrsToGet);
    

    行参数永远不会改变。代码始终检查第 2 行。更改为:

    var tchrs = ss.getRange(i+2, start+3, 1, tchrsToGet);
    

    第一个参数是起始行。起始行应随着for 循环中i 的值递增。

    【讨论】:

    • 哦,哇...我什至没有想过要尝试。我曾尝试仅使用 i 作为起始值,但它会返回范围选择错误。感谢您查看它。
    猜你喜欢
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 1970-01-01
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多