我正在为Google工作表编写脚本,并从头开始学习脚本。
我使用了以下脚本,并成功更改了输入列,但输出仍保留在列A中。我希望输出转到列T,并且行应保持不变。
触发器类型不错,但是它可以在所有工作表中使用,因此我需要限制其工作表。如何使脚本在一种特定的工作表和标签组合中工作?
只要我询问将输出更改为一列,您能否解释确定输出列和行的一般方法?
谢谢。
代码,这是我正在使用的确切脚本。一旦在编辑器中运行脚本,它就会在第3行给我一个错误,即“ var eventRange = event.range;”。
如果在第6行中删除工作表名称“要发送的票”周围的定额符号,则会停止,但是在第6行运行脚本时出现新错误,该脚本在条件第6行显示“缺少”。 。 这是我正在使用的代码,由另一位张贴者在此处编写。
function onEdit(event) {
var eventRange = event.range;
var sheetName = eventRange.getSheet().getName();
if (eventRange.getColumn() == 14 && sheetName == 'tickets to deliver') {
//if (eventRange.getColumn() == 14 && sheetName.match(/sheetName1|sheetName2/)) {
// getRange(row, column, numRows, numColumns)
var columnXRange = SpreadsheetApp.getActiveSheet().getRange(eventRange.getRow(), 21, eventRange.getNumRows(), 1);
//second parameter changed from '1' to '21'. 21 represents column 'U'
var values = columnXRange.getValues();
for (var i = 0; i < values.length; i++) {
if (!values[i][0]) {
values[i][0] = new Date();
}
}
columnXRange.setValues(values);
}
}
答案 0 :(得分:1)
我希望输出转到T列,并且该行应保持不变。
将, 1,
更改为, 20,
。
答案 1 :(得分:0)
您可以通过检查工作表名称来管理脚本影响的工作表。下面有两个选项。
从A到T的列调整在下面进行了评论。
function onEdit(event) {
var eventRange = event.range;
var sheetName = eventRange.getSheet().getName();
if (eventRange.getColumn() == 14 && sheetName == 'yourSheetNameHere') {
//if (eventRange.getColumn() == 14 && sheetName.match(/sheetName1|sheetName2/)) {
// getRange(row, column, numRows, numColumns)
var columnXRange = SpreadsheetApp.getActiveSheet().getRange(eventRange.getRow(), 20, eventRange.getNumRows(), 1);
//second parameter changed from '1' to '20'. 20 represents column 'T'
var values = columnXRange.getValues();
for (var i = 0; i < values.length; i++) {
if (!values[i][0]) {
values[i][0] = new Date();
}
}
columnXRange.setValues(values);
}
}
编辑
谈话后,我跳上计算机测试脚本。
这是我的工作脚本。 (只是删除了注释)实际的脚本应该没有任何变化。
此外,请注意,在测试需要事件对象的onEdit或onChange函数时,您不能仅按原样使用debug函数。
如果要使用调试功能,则需要在此功能中将第3行更改为var eventRange = SpreadsheetApp.getActive.getActiveRange();
。
还请注意,工作表名称测试字符串必须准确且区分大小写。
function onEdit(event) {
var eventRange = event.range;
var sheetName = eventRange.getSheet().getName();
if (eventRange.getColumn() == 14 && sheetName == 'tickets to deliver') {
var columnXRange = SpreadsheetApp.getActiveSheet().getRange(eventRange.getRow(), 21, eventRange.getNumRows(), 1);
var values = columnXRange.getValues();
for (var i = 0; i < values.length; i++) {
if (!values[i][0]) {
values[i][0] = new Date();
}
}
columnXRange.setValues(values);
}
}