在指定列中输入字母“a”时,将行移动到“存档”选项卡

时间:2014-09-16 21:45:50

标签: google-apps-script google-sheets

我制作了一个集体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

也许有一些冲突?有什么帮助吗?

谢谢,托比亚斯

2 个答案:

答案 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)