有问题的电子表格 - https://docs.google.com/spreadsheets/d/1t50ieV8dRvvyfsYVaxf_ZthToA-60dSW6xpjBNvVvA4/edit?usp=sharing
A5 中的值指示应将数据提交到哪个工作表。
我是脚本的新手,并且找到了一些简单的代码,看起来它可以解决问题,但由于我不理解其中的一部分,所以我无法将其适应我的工作表。
function submitData() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Tool Life");
var range = sheet.getRange(1,5)
var data = range.getValue()
var datasheet = ss.getSheetByName(data);
//Input Values
var values = [[sheet.getRange("B5").getValue(), //tool
sheet.getRange("C5").getValue(), //reason
sheet.getRange("D5").getValue(), //replaced
sheet.getRange("E5").getValue(), //current
sheet.getRange("F5").getValue(), //new
sheet.getRange("G5").getValue(), //from length
sheet.getRange("H5").getValue(), //to length
sheet.getRange("I5").getValue(), //from diameter
sheet.getRange("J5").getValue(), //to diameter
sheet.getRange("K5").getValue(), //where used
sheet.getRange("L5").getValue(), //flagged
sheet.getRange("M5").getValue(), //set to measure
sheet.getRange("N5").getValue(), //name
sheet.getRange("O5").getValue(), //date
sheet.getRange("P5").getValue()]]; //comments
datasheet.getRange(datasheet.getLastRow()+1, 1, 1, 15).setValues(values);
}
我不明白最后一行代码上的数字是什么。 我假设 15 是列数或条目数。
我猜测我可以在这一行中使用变量"data":var datasheet = ss.getSheetByName(data);
但由于它不起作用,所以我不能玩它。
解释:
你们离得很近。
-
根据您提供的电子表格,您想要获取单元格工具寿命表的A5。您正在调用
sheet.getRange(1,5)
但会给出单元格E1。你应该使用sheet.getRange(5,1)
或sheet.getRange('A5')
以获得正确的单元格。 -
引用
values
的长度而不是硬拷贝范围总是一个好主意。请改用它:datasheet.getRange(datasheet.getLastRow()+1, 1, values.length, values[0].length).setValues(values);
解决方案:
function submitData() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Tool Life");
var range = sheet.getRange(5,1);
var data = range.getValue();
var datasheet = ss.getSheetByName(data);
//Input Values
var values = [[sheet.getRange("B5").getValue(), //tool
sheet.getRange("C5").getValue(), //reason
sheet.getRange("D5").getValue(), //replaced
sheet.getRange("E5").getValue(), //current
sheet.getRange("F5").getValue(), //new
sheet.getRange("G5").getValue(), //from length
sheet.getRange("H5").getValue(), //to length
sheet.getRange("I5").getValue(), //from diameter
sheet.getRange("J5").getValue(), //to diameter
sheet.getRange("K5").getValue(), //where used
sheet.getRange("L5").getValue(), //flagged
sheet.getRange("M5").getValue(), //set to measure
sheet.getRange("N5").getValue(), //name
sheet.getRange("O5").getValue(), //date
sheet.getRange("P5").getValue()]]; //comments
datasheet.getRange(datasheet.getLastRow()+1, 1, values.length, values[0].length).setValues(values);
}
>参考资料:- getRange()