私はどこでも見て、このボードで関連する質問を見ましたが、私は本当に立ち往生しています。Google App Scriptキャッチ行番号
シートの実際の行の値を取得するには、ifステートメントに基づいてforループを繰り返します。
コードの他の部分では、フォームの応答シートのコピーを作成し、それをフォルダに移動する必要があります。私はすでに作成されているシートに作成されている新しいファイルのファイルIDをログに記録しようとしています(そしてスクリプトはメニューから呼び出されています)。
私はデータと値を取得し、それらを繰り返し、ログのすべてを見ることができます。私は他の同様の質問などで見たものに基づいて、getActiveRange()。getRow()の部分を試しましたが、フォームが開いているときにカーソルがある正確な行に対してのみ機能します。私は、スクリプトが現在見ている行に基づいてforループを経てActiveRow変数を動的に設定できる必要があります。
if文が列内の文字列値 "NOT FOUND"を探しているだけなので、forループ変数を現在の行(j + 1)として使用することはできないため、 "j"変数値は更新する行の値と必ず一致します。
ありがとうございました!
// Get the active spreadsheet and the active sheet
var ssEXD = SpreadsheetApp.getActive().getSheetByName('FormData');
var lastRowEXD = ssEXD.getLastRow();
var lastColumnEXD = ssEXD.getLastColumn();
var formIDValues = ssEXD.getSheetValues(2, 1, lastRowEXD-1, lastColumnEXD);
//Loop through the returned values
for(var j = 0; j < formIDValues.length; j++) {
//if NOT FOUND is true, do stuff
if (formIDValues[j][6] == "NOT_FOUND") {
//need this variable to be the exact row of the sheet value data
var ActiveRow = ssEXD.getActiveRange().getRow();
//I need to use the ActiveRow in the getActiveRange to update the sheet with some information.
ssEXD.getRange(ActiveRow,6,1).setValue("testing");
}
}
こんにちはクーパー、応答とコードの更新をありがとうございます。これを見ている人には、配列の列の値を更新することを覚えておいてください。最初はゼロではなく、1から始まっています。私はそれを分かった。私はそれを理解するようにフォローアップの質問。 setValuesメソッドは、forループまたはifループの外側の行をどのように追跡しますか?それはどのように機能するのですか?正しい方法で私を指摘してくれてありがとう、特にifステートメントの変数を再設定することに感謝します。 –
スプレッドシートの行と列は1つから始まります。 getValues()によって作成された配列の行と列はゼロから始まります。したがって、行1および列1のセル内のデータは、dataA [0] [0]と同じデータです。 setValues()を実行するときに、dataRが同じサイズであることを確認してください。配列は2次元でなければなりません。 – Cooper