gpt4 book ai didi

google-apps-script - 如何使用 setValues() 粘贴从 getValues() 获得的数据?谷歌电子表格

转载 作者:行者123 更新时间:2023-12-01 10:35:51 25 4
gpt4 key购买 nike

所以我一直在纠结这个问题,似乎无法将我的头围绕在 2D 数组上。我已经设置了以下代码,但无法获取 setValues()工作(代码的结尾。)

我很确定我需要将它设置为一个数组,但是我尝试设置它的每一种方式都导致了不同的错误消息。如何正确编写代码以避免错误消息。

function onSearch() {
var sheetID = DriveApp.getFilesByName('Dash').next().getId();
var ss = SpreadsheetApp.openById(sheetID);
var sheet = ss.getSheetByName("Master List");

//Loop through Class List, get Course Codes
var classes = ss
.getSheetByName("sheetInfo")
.getRange(1, 2, 3)
.getValues();

//Loop through courses
for (var k = 0; k < classes.length; k++) {
var classCode = classes [k];
var searchVal = classCode;
var column = 18;

//Get Course Sheets
var classSheetArray = ss.getSheetByName("sheetInfo")
.getRange(1, 1, 3)
.getValues();
var classSheetName = classSheetArray [k];
var classSheet = ss.getSheetByName(classSheetName);

//Insert headers into Class sheets
sheet.getRange(1, 1, 1, 17).copyTo(classSheet.getRange(1, 1, 1, 17));

//Loop through 9 different course codes from student timetable
for (var j = 0; j < 9; j++) {

var searchCol = sheet.getRange(2, column+j, sheet.getLastRow())
.getValues();

for (var i = 0, len = searchCol.length; i < len; i++) {

//Take the data from the search and place it in the corresponding class tab.
//This data will have 17 columns and the number of rows is dependent on the number of returned students.
if (searchCol[i][0] == searchVal) {
var lastRow = classSheet.getLastRow();
var sourceInfo = sheet.getRange(i+2, 1, 1, 17)
.getValues();

tempArray = [];
tempArray.push(sourceInfo[i]);

Logger.log(tempArray); // WHEN I LOG THE ARRAY THE DATA LOOKS LIKE [[col 1, col 2 ...]][[col 1, col 2 ...]]...

classSheet.getRange(lastRow+1,1,1,sourceInfo.length) //DEFINITELY KNOW THIS TO BE WRONG...
.setValues(tempArray[0][i]);

}
}
}
}
}

最佳答案

当前,在您的代码中,长度为 sourceInfo总是 1:

var sourceInfo = sheet.getRange(i+2, 1, 1, 17)
.getValues();
getRange 的语法有 4 个参数是:
getRange(start row, start column, number of rows, number of columns)

您获得的行数为 1。您获得 17 列,但外部数组长度为 1。内部数组长度为 17。

所以,你可以使用:
classSheet.getRange(lastRow+1,1,1,sourceInfo[0].length)

注意 [0] 的索引之后 sourceInfo : sourceInfo[0]
这将返回 17 列的长度。

如果您不希望列数为 1 以外的任何值,那么使用 arrayName.length 毫无意义。在参数中。

您正在使用 sourceInfo设置列数,然后写入 tempArray .您应该使用 tempArray来设置参数值。使用任何具有数据的数组来设置参数。
classSheet.getRange(lastRow+1,1,tempArray.length,tempArray[0].length)
.setValues(tempArray);

关于google-apps-script - 如何使用 setValues() 粘贴从 getValues() 获得的数据?谷歌电子表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35413567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com