使用列表满足条件时替换单元格中的数据

时间:2015-04-05 00:46:48

标签: google-apps-script google-sheets

我希望能够用列表替换单元格的内容。

目前,我在第一列中有一个下拉列表,当用户选择“接受”时,它会将该行复制到另一个工作表中并删除旧行。

但是,在新位置,它已经复制了上一个位置(第一列)的下拉列表,该列表已经覆盖了包含完成,取消的新下拉列表(在工作表2的第一列中)列表。 / p>

我试图检测“接受”一词,然后使用“完成”和“取消”选项列表覆盖该文件,或者复制不包括第一列的整行。

以下是我目前的代码。我今天才开始使用Google脚本,因此我对此代码的了解非常有限。到目前为止,我发现的所有内容都来自谷歌搜索和一点点运气。

提前感谢您的帮助。

function onEdit(event) 
{
  // assumes source data in sheet named Form responses 1
  // target sheet of move to named Commissions in review
  // test column with yes/no is col 4 or D
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();

  if(s.getName() == "Form responses 1" && r.getColumn() == 1 && r.getValue() != "") 
  {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Commissions in review");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 2);
    s.getRange(row, 1, 1, numColumns).copyTo(target);
  }

  if(s.getName() == "Commissions in review" && r.getColumn() == 1 && r.getValue() == "Accept") 
  {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Accepted Work list");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }
  if(s.getName() == "Commissions in review" && r.getColumn() == 1 && r.getValue() == "Delete") 
  {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    s.deleteRow(row);
  }
}

1 个答案:

答案 0 :(得分:1)

您是否只能更改列起点?现在,您的范围参考从第1列开始:

var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);

也许试试:

var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 2);
s.getRange(row, 2, 1, numColumns-1).moveTo(target);

目标从第2列开始。范围从第2列开始,numColumns减去1.