我制作了一个集体TODO列表,事实证明它非常有用。应该不时地将完成的任务移动到“存档”选项卡,我想通过在G列中输入值“a”来执行该操作。
我试过这样:
var sheetNameToMoveTheRowTo = "archive";
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());
在另一个脚本中工作(以另一种方式),但不在此脚本中: https://docs.google.com/spreadsheet/ccc?key=0AveLEDuTZv0vdGh6LXNleFpBa2hYNmx0aDVKblNGaVE&usp=sharing
也许有一些冲突?有什么帮助吗?
谢谢,托比亚斯
答案 0 :(得分:1)
此功能将数据从“TODO列表”移动到“存档”。 您编写的代码太大了,我相信您正在使用该代码执行更多操作。但我只编码将数据从TODO列表移动到存档选项卡,如果有人在第7列中添加'a'。我已将此代码添加到您的电子表格中,您可以从那里进行测试。
function AneesHameed(e)
{
var SourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('TODO List');
var DestSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('archive');
var Column = e.range.getColumn();
var ChangeHappendAt = e.source.getActiveSheet().getName();
var Row = e.range.getRow();
if(ChangeHappendAt == "TODO List" && Column == 7 && Row > 3 && e.value == "a")
{
var LastRow = DestSheet.getLastRow()+1;
DestSheet.getRange(LastRow, 1, 1, 10).setValues(SourceSheet.getRange(Row, 1, 1, 10).getValues());
SourceSheet.getRange(Row, 1, 1, 10).clearContent();
}
}
答案 1 :(得分:0)
我收到错误,“ss未定义”,来自这行代码。
var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo);
已经定义了ss的代码行被注释掉:第28行
//var ss = e.source.getActiveSheet();
如果在运行代码后打开查看菜单下的执行记录,您应该会在日志的最后一行看到错误。
[14-09-17 01:45:14:123 CEST]Ausführungfehlgeschlagen: ReferenceError:“ss”ist nicht definiert。 (第82行,文件“timestamp”) (0.156 Sekunden Laufzeit insgesamt)