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()は常に 2 次元配列です。これが理由であり、[0]インデックスが 0 です >> 21 に変更されました

sourceSheet.getActiveCell().getValue()書き込み先のセルの値を直接返す whichを使用すると、コードがより簡単になる可能性があることに注意してください...

Valueと列インデックスを取得するこの小さな例を試してください。

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 に答える