首页 > 解决方案 > getRange 和 setValues 函数返回数据和列数之间的不匹配

问题描述

我正在尝试使用我的 userSheet 中与“Nageur”状态(D 列)匹配的用户名称(C 列)填充游泳者表中的 A1 列。

由于我是 Google Script 的新手,我不知道如何调整下面的代码。我在研究中发现的每个解决方案都返回了一条错误消息。

现在,下面的代码将我在 userSheet 中获得的整行数据设置为我的 SwimmerSheet 的第一行。我只想获取全名(userSheet的C列),放到swimmerSheet的第一列。

function transferSwimmerInApp() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var userSheet = spreadsheet.getSheetByName('Utilisateurs');
  var swimmerSheet = spreadsheet.getSheetByName('Nageurs')
  
  // Get range with data from original sheet:
  var firstRow = 1;
  var firstCol = 3;
  var numRows = userSheet.getLastRow();
  var numCols = 3;
  var data_range = userSheet.getRange(firstRow, firstCol, numRows, numCols).getValues();

  //This is the status of the swimmer
  var status = 'Nageur';
  var check = userSheet.getRange('D2:D').getValues(); //The range to if statement against

  // Iterates through all rows of data from "Utilisateurs"
  for (var i=0;i<check.length; i++) {
    var col = data_range[i]; // Current row
    
    if(check[i] == status) { 
      swimmerSheet.getRange(2, 1, 1, 1).setValues([col]) 
   }
  }
}

有谁知道我如何调整它以使其完美执行?

标签: google-apps-scriptgoogle-sheets

解决方案


推荐

实际上,您可以使用QUERY函数来填充“Nageurs”中的 A1 列,并在“Utilisateurs”表中匹配“Nageur”状态的用户名称(C 列)。

=QUERY(Utilisateurs!A:D,"SELECT C WHERE D = 'Nageur'")

'Nageurs' 表上的查询功能:

在此处输入图像描述

这是“Utilisateurs”表:

在此处输入图像描述


推荐阅读