google-apps-script - 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])
}
}
}
有谁知道我如何调整它以使其完美执行?
解决方案
推荐
实际上,您可以使用QUERY函数来填充“Nageurs”中的 A1 列,并在“Utilisateurs”表中匹配“Nageur”状态的用户名称(C 列)。
=QUERY(Utilisateurs!A:D,"SELECT C WHERE D = 'Nageur'")
'Nageurs' 表上的查询功能:
这是“Utilisateurs”表: