我的Google表格脚本存在问题
我从事教育工作,基本上我们有一些老师想要在需要将学生转介给管理员时使用表格。
因此,我们设置了Google表单,并且它的答案填充了表单中的“主”标签。然后我们为每个管理员设置了一个标签,我们可以根据“管理员分配”框的内容(下面代码中的ColumnT)编写一个移动数据的函数
我需要实现功能的第一点是处理该部分的代码,这是我能够提出的(重要的评论,以便您可以希望看到我的思考过程):
//Get the active spreadsheet and store in a variable
function importStudName() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
//Get"Master" spreadsheet and store in a variable
var master_sheet = ss.getSheetByName("Master");
//Get "Miranda" spreadhseet and store in a variable
var miranda_sheet = ss.getSheetByName("Miranda");
//Column T
var columnT = master_sheet.getSheetValues(0, 20, 0, -1);
//Column D
var columnD = master_sheet.getSheetValues(0, 4, 0, -1);
//Column E
var columnE = master_sheet.getSheetValues(0, 4, 0, -1);
//Loop through Column T and find every value that = "Miranda"
for(var i = 0; i <= columnT; i++) {
if (columnT[i] === "Miranda") {
//Set a variable to hold the last row in the "Miranda" sheet
var miranda_row = (miranda_sheet.getLastRow() + 1);
//Make the row with the "Miranda" string active
//Set a variable that concatenates the Column D and Column E variables (from "master" sheet) into a string
//Copy the new variable to the "Miranda" sheet
.copyValuesToRange(miranda_sheet, 1, 1, miranda_row, miranda_row);
}
}
}
大多数情况下,我似乎无法找出能够选择其中包含“Miranda”关键字的行的位。一旦我解决了这个问题,我认为这只是使用.getRange()函数从columnD和columnE中提取值。
我的JavaScript有点生疏,这是我第一次为应用脚本编写内容。所以我可能会犯这个错误:)
欢迎任何建议
答案 0 :(得分:2)
方法getSheetValues返回“Object [] [] - 一个二维数组值”。因此,其条目应以values[i][j]
的形式访问,其中i
是距离范围左上角的行偏移量,j
是列偏移量。特别是,您的Miranda比较应该是
if (columnT[i][0] === "Miranda")
另一个评论:与JavaScript数组索引不同,表格中的行号和列号以1开头。在(0, 20, 0, -1);
中传递getSheetValues
表示您可能会错误地计算内容。
最后,我建议您使用.getRange(...).getValues()
代替getSheetValues()
。首先,您可以将A1表示法传递给getRange,例如
var valuesT = sheet.getRange("T1:T").getValues();
获取T列中的所有值。如果最好不在底部获取一堆空单元格,可以使用
var lastRow = sheet.getLastRow();
var valuesT = sheet.getRange("T1:T" + lastRow).getValues();