Google 应用程序脚本。无法设置范围内的值,因为数据中的行数与范围内的行数不匹配

Google Apps Script. Cannot set value in range because number of rows in the data does not match the number of rows in the range

任务是在特定范围(变量“范围”)中找到单词 'Request',从匹配 'Request' 的行上最近的列复制信息, 然后粘贴到另一个范围。

无法弄清楚如何在多个单元格中插入 变量“offsetval1” 的值。看起来像 returns 9 个值,但如果我使用 Logger.log(offsetval1.length); 检查它 returns 1.0. 但是,有 9 行具有不同的值(查看屏幕截图)。

如何在这 9 行的范围内输入 "offsetval1" 的值?

function DocReq() {
  var ui = SpreadsheetApp.getUi();
  var result = ui.prompt("Please, enter Line Count"); // Prompt Input
  var line_count = result.getResponseText(); // Prompt Result (Number) as VAR
  var int_line_count = (+line_count); // Number as Integer
  var range_bottom = int_line_count-1; // Integer - 1 (Total Amount of Rows)

  var spreadsheet = SpreadsheetApp.getActive();
  var currect_cell = spreadsheet.getActiveCell().getRow(); // Row of Active Cell
  var int_current_cell = (+currect_cell); // Row as Integer (Top First Row)

  var main_range_bottom = int_current_cell+range_bottom; // Bottom Last Row
 
  var range = spreadsheet.getRange('L' + int_current_cell + ':' + 'L'+ main_range_bottom); // Get Range All !Requested!

  var find_rqst = range.createTextFinder('Requested').findAll(); // Creating Text Finder !Requested!

  for (var i = 0; i < find_rqst.length; i++) { // Finding Exceptionally !Requested!
    var arrayofreq = find_rqst[i];

    var offsetval1 = arrayofreq.offset(0, -4).getValues(); // Getting Values of !H! Column of All !Requested!
    Logger.log(offsetval1);
    }
    Logger.log(offsetval1.length);
    Logger.log(find_rqst.length);

  spreadsheet.getRange('K131:K139').setValues(offsetval1);
}

问题:

代码的问题在于 offsetval1 是在 for 循环内迭代定义的,因此它始终包含一个值,这就是长度为 1 的原因。你实际上是用新的内容覆盖了之前的内容

  • 尝试将每个值存储到一个数组,然后 set 数组。

解决方案:

function DocReq() {
  var ui = SpreadsheetApp.getUi();
  var result = ui.prompt("Please, enter Line Count"); // Prompt Input
  var line_count = result.getResponseText(); // Prompt Result (Number) as VAR
  var int_line_count = (+line_count); // Number as Integer
  var range_bottom = int_line_count-1; // Integer - 1 (Total Amount of Rows)

  var spreadsheet = SpreadsheetApp.getActive();
  var currect_cell = spreadsheet.getActiveCell().getRow(); // Row of Active Cell
  var int_current_cell = (+currect_cell); // Row as Integer (Top First Row)

  var main_range_bottom = int_current_cell+range_bottom; // Bottom Last Row
 
  var range = spreadsheet.getRange('L' + int_current_cell + ':' + 'L'+ main_range_bottom); // Get Range All !Requested!

  var find_rqst = range.createTextFinder('Requested').findAll(); // Creating Text Finder !Requested!
  var offsetval1 = []; // Modified code

  for (var i = 0; i < find_rqst.length; i++) { // Finding Exceptionally !Requested!
    var arrayofreq = find_rqst[i];
    offsetval1.push([arrayofreq.offset(0, -4).getValue()]); // Modified code
    }

  spreadsheet.getRange('K131:K139').setValues(offsetval1);
}