2

我有以下脚本(其中一些是我发现并根据我的需要修改的:

function onedit(e) { 
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var targetSheetName = "Completed";
  var sourceSheetName = "Eligibility & Pre-Auths"
  var targetSheet = ss.getSheetByName(targetSheetName);
  var sourceSheet = ss.getActiveSheet();
  var sourceRow = sourceSheet.getActiveRange().getRow();
  var targetRow = targetSheet.getLastRow() + 1;
  if (sourceSheet.getName() == SourceSheetName) {;
    if (sourceRow[22]=="Yes") {;
      if (targetRow > targetSheet.getMaxRows()) targetSheet.insertRowAfter(targetRow - 1);
      sourceSheet.getRange(sourceRow, 1, 1, sourceSheet.getLastColumn()).copyTo    (targetSheet.getRange(targetRow, 1));
      sourceSheet.deleteRow(sourceRow);
    };
  };
}

除了我的情况,一切似乎都正常 - if (sourceRow[22]=="Yes")

我是新手,所以我知道我只是没有正确引用它。

我只是想检查文本“是”是否在当前行的第 22 列中。我在编辑时执行这个脚本。所以基本上,当在这个字段中输入“是”时,我会将这条记录移动到名为“已完成”的工作表中

4

1 回答 1

1

该语句getRow()返回一个整数,该范围的行数,您想要的是该行中 22cd 单元格的值,所以尝试

  var sourceRow = sourceSheet.getActiveRange().getRow();
  var sourceRowValue = sourceSheet.getRange(sourceRow,1,1,sourceSheet.getMaxColumn()).getValues();

然后获取单元格值条件:

    if (sourceRowValue[0][21]=="Yes") {;
     ...

结果getValues()始终是一个二维数组,这就是[0]and is 0 indexed >> 更改为 21的原因

请注意,如果您使用sourceSheet.getActiveCell().getValue()which 直接返回您正在写入的单元格的值,我猜您的代码可能会更简单...

试试这个我得到值列索引的小例子:

function onEdit(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var cellValue = ss.getActiveCell().getValue()
ss.getRange('A1').setValue(cellValue+' in col '+ss.getActiveCell().getColumn())
} 
于 2012-12-29T00:30:00.907 回答