Google文档SpreadSheet脚本 - 如何将连续的特定单元格作为条件引用

时间:2012-12-28 22:31:49

标签: google-apps-script

我有以下脚本(其中一些我找到并修改了我的需求:

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);
    };
  };
}

除了我的条件外,一切似乎都有效 - 如果(sourceRow [22] ==“是”)

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

我只是想检查文本“是”是否在当前行的第22列。我在编辑时执行此脚本。所以基本上,当在这个fieild中输入“是”时,我将此记录移至名为“已完成”的表单

1 个答案:

答案 0 :(得分:1)

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

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

然后获取单元格值条件:

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

getValues()的结果始终是2维数组,这就是[0]的原因,并且是0索引>>改为21

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

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

function onEdit(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var cellValue = ss.getActiveCell().getValue()
ss.getRange('A1').setValue(cellValue+' in col '+ss.getActiveCell().getColumn())
}