当前位置: 首页 > 知识库问答 >
问题:

脚本编辑器不适用于Google Form响应表

燕朝明
2023-03-14

我正在使用下面的脚本在编辑单元格时将行移动到其他工作表。我还需要将此脚本应用于谷歌表单响应表。我在表单响应表上创建了一个新列,当标记为“是”时,我需要将该行移到工作簿中的另一个工作表中。谷歌表单响应表与普通表单不同吗?该脚本适用于所有其他工作表。

function onEdit() {
var sheetNameToWatch = "New Listings";
var columnNumberToWatch = 52;
var valueToWatch = "Yes";
var sheetNameToMoveTheRowTo = "New Listings Completed";

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveCell();

if (sheet.getName() == sheetNameToWatch && range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatch) {

var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo);
var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
sheet.getRange(range.getRow(), 1, 1,sheet.getLastColumn()).moveTo(targetRange);
sheet.deleteRow(range.getRow());
}
}

共有1个答案

阎丰羽
2023-03-14

如果您将代码修改为复制到而不是移动到,它会给出预期的行为。

sheet.getRange(range.getRow(), 1, 1,sheet.getLastColumn()).copyTo(targetRange);

修改代码:

function onEdit() {
var sheetNameToWatch = "New Listings";
var columnNumberToWatch = 52;
var valueToWatch = "Yes";
var sheetNameToMoveTheRowTo = "New Listings Completed";

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveCell();

if (sheet.getName() == sheetNameToWatch && range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatch) {

var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo);
var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
sheet.getRange(range.getRow(), 1, 1,sheet.getLastColumn()).copyTo(targetRange);
sheet.deleteRow(range.getRow());
}
}

正如您所猜到的,原因很可能是响应表是一个独特的表。此外,如果你看你的执行记录,它会给出这样一个错误:

[17-04-04 21:51:56:645 CDT] Execution failed: Cannot cut from form data. Use copy instead. (line 123, file "SOhelp2") [0.405 seconds total runtime]

希望有帮助!

 类似资料:
  • 脚本编辑器让你创建和编辑脚本,准备和运行已选择的脚本。拖放或双击右侧的“标识符”窗格的一个标识符来将它添加到编辑器中。 【提示】当你使用查找创建工具或聚合创建工具创建查询时,脚本将会在脚本编辑器中自动生成。 Navicat 提供广泛的高级功能,例如:编辑代码功能、智能自动完成代码、设置脚本格式及更多。 设置脚本格式 若要更改脚本格式,简单地从“格式”菜单选择 - 缩进 为已选择的代码行增加或减少缩

  • 脚本编辑器让你创建和编辑脚本,准备和运行已选择的脚本。拖放或双击右侧的“标识符”窗格的一个标识符来将它添加到编辑器中。 【提示】当你使用查找创建工具或聚合创建工具创建查询时,脚本将会在脚本编辑器中自动生成。 Navicat 提供广泛的高级功能,例如:编辑代码功能、智能自动完成代码、设置脚本格式及更多。 设置脚本格式 若要更改脚本格式,简单地从“格式”菜单选择 - 缩进 为已选择的代码行增加或减少缩

  • 脚本编辑器让你创建和编辑脚本,准备和运行已选择的脚本。拖放或双击右侧的“标识符”窗格的一个标识符来将它添加到编辑器中。 【提示】当你使用查找创建工具或聚合创建工具创建查询时,脚本将会在脚本编辑器中自动生成。 Navicat 提供广泛的高级功能,例如:编辑代码功能、智能自动完成代码、设置脚本格式及更多。 设置脚本格式 若要更改脚本格式,简单地从“格式”菜单选择 - 缩进 为已选择的代码行增加或减少缩

  • 问题内容: 我想在python脚本中调用一个编辑器,以征询用户的输入,就像还是这样做。 这是我到目前为止所运行内容的摘录。(将来,我可能会使用$ EDITOR而不是vim,以便人们可以根据自己的喜好进行自定义。) 我的问题是,通过使用Popen,似乎使python脚本的I/O不能进入正在运行的vim副本中,而我找不到仅将I /O传递给vim的方法。我收到以下错误。 从python调用CLI程序,将

  • 有人能帮我解决这个问题吗?当然,在Linux上运行时,我已经将路径更改为。

  • 问题内容: 我想在两种情况下编辑Matlab脚本 (1)在Linux终端上运行的matlab命令窗口中,如何创建和编辑脚本文件?采用 将调用交互式编辑器,这在Linux服务器上运行时是不希望的。 (2)在emacs中,有什么方法可以方便地编辑matlab脚本?使用MATLAB-Emacs或EmacsLink哪个更好? 当我尝试从http://sourceforge.net/scm/?type=cv