我对的脚本有个问题
我在教育部门工作,基本上我们有一些老师,他们希望有一个表格,当他们需要把学生推荐给管理员时。
因此,我们设置了一个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有点生疏,这是我第一次为应用程序脚本编写东西。所以这很可能是我做错了
欢迎提出任何建议。
发布于 2016-12-30 01:38:04
方法getSheetValues返回"Object -一个二维的值数组“。因此,应该以values[i][j]的形式访问它的条目,其中i是范围左上角的行偏移量,而j是列偏移量。特别是,你的米兰达比较应该是
if (columnT[i][0] === "Miranda")另一个注意事项:工作表中的行号和列号以1开头,与JavaScript数组索引不同。在(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();https://stackoverflow.com/questions/41388816
复制相似问题