我正在尝试编写脚本的两部分:
非常感谢任何帮助!
这是我迄今为止第一个代码:(将表单响应移至开放请求)
function onEdit(e){
let range = e.range
let col = range.getColumn();
let row = range.getRow();`
let val = range.getValue();
let source = e.source.getActiveSheet();
if (col == 10 && val !== 'New'){
let ss = SpreadsheetApp.getActiveSpreadsheet();
let sheet = ss.getSheetByName(source.getName());
let targetSheet = ss.getSheetByName('Open Requests');
let targetRow = targetSheet.getLastRow() + 1;
let data = sheet.getRange(row,1,1,sheet.getLastColumn()).getValues();
targetSheet.appendRow(data[0]);
sheet.deleteRow(row);
} }
但是,当我运行它时,我不断收到此错误,并且它没有将数据移动到“打开请求”选项卡。
[类型错误:无法读取未定义的属性(读取“范围”) onEdit @ 将表单响应移动到 Open Requests.gs:6]
我曾让第二部分工作过,但不小心写了它,所以不得不重新开始,现在我也根本无法让它工作。
目标是将响应从
"Form Responses"
工作表移至 "Open Requests"
工作表,并在 the "Open Request"
设置为 to the "Completed Requests"
后将行从 Column J
工作表移至 "Completed"
工作表。
致
move the responses from the "Form Responses" sheet to the "Open Requests" sheet
,这是一个示例脚本,应该可以实现您想要的效果:
function onFormSubmit(e) {
var rs = e.source.getSheetByName("Form Responses 1");
var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Open Requests");
sh.appendRow(e.values);
rs.deleteRow(rs.getLastRow());
}
与onEdit(e)类似,您不需要手动运行代码即可使脚本工作。相反,请使用 手动管理触发器 创建
onFormSubmit trigger
来运行该函数。单击 Google Apps 脚本编辑器左侧的 触发器 > + 添加触发器 以创建一个触发器。
至于
我曾经让第二部分工作过,但不小心写了它,所以不得不重新开始,现在我也根本无法让它工作。
它不起作用的原因是因为行被移动到
Open Requests
而不是Completed Requests
。
改变:
let targetSheet = ss.getSheetByName('Open Requests');
致:
let targetSheet = ss.getSheetByName('Completed Requests');
完整代码将变为:
function onFormSubmit(e) {
var rs = e.source.getSheetByName("Form Responses 1");
var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Open Requests");
sh.appendRow(e.values);
rs.deleteRow(rs.getLastRow());
}
function onEdit(e) {
let range = e.range
let col = range.getColumn();
let row = range.getRow();
let val = range.getValue();
let source = e.source.getActiveSheet();
if (col == 10 && val !== 'New') {
let ss = SpreadsheetApp.getActiveSpreadsheet();
let sheet = ss.getSheetByName(source.getName());
let targetSheet = ss.getSheetByName('Completed Requests');
let data = sheet.getRange(row, 1, 1, sheet.getLastColumn()).getValues();
targetSheet.appendRow(data[0]);
sheet.deleteRow(row);
}
}
注意:我从脚本中删除了
let targetRow = targetSheet.getLastRow() + 1;
,因为它没有被使用。另请确保您已为 onFormSubmit(e)
功能设置 可安装触发器,以便将响应移至
Open Requests
工作表。