0

私はGoogleのシートのためのスクリプトの問題を抱えているに基づいてコピーセルの値が条件

私は教育で働く、そして基本的に我々はにフォームを持っていると思います一部の教師を持っています生徒を管理者に紹介する必要があるときに使用します。

Googleフォームが設​​定されており、その回答がシート内の「マスター」タブに表示されます。次に、各管理者用のタブが設定されています。つまり、「管理者が割り当てた」ボックスの内容に基づいてデータを移動する機能(以下のコードのColumnT)

最初のビットI機能的な取得する必要がありますが、その部分を処理するコードで、ここに(あなたがうまくいけば、私の思考プロセスを見ることができるように、多くのコメント)私が思い付くことができましたものです:

//Get the active spreadsheet and store in a variable 
function importStudName() { 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
//Get"Master" spreadsheet and store in a variable 
var master_sheet = ss.getSheetByName("Master"); 
//Get "Miranda" spreadhseet and store in a variable 
var miranda_sheet = ss.getSheetByName("Miranda"); 
//Column T 
var columnT = master_sheet.getSheetValues(0, 20, 0, -1); 
//Column D 
var columnD = master_sheet.getSheetValues(0, 4, 0, -1); 
//Column E 
var columnE = master_sheet.getSheetValues(0, 4, 0, -1); 
//Loop through Column T and find every value that = "Miranda" 
    for(var i = 0; i <= columnT; i++) { 
     if (columnT[i] === "Miranda") { 
      //Set a variable to hold the last row in the "Miranda" sheet 
      var miranda_row = (miranda_sheet.getLastRow() + 1); 
      //Make the row with the "Miranda" string active 

      //Set a variable that concatenates the Column D and Column E variables (from "master" sheet) into a string 

      //Copy the new variable to the "Miranda" sheet 
      .copyValuesToRange(miranda_sheet, 1, 1, miranda_row, miranda_row); 
    } 
    } 
} 

を主に、私はできませんその中に "Miranda"というキーワードを持つ行を選択するビットを見つけ出すようです。一度それを取り除くと、.getRange()関数を使ってcolumnDとcolumnEから値を引き出すことにすぎないと思います。

私は自分のJavaScriptに少し錆びています。これはアプリスクリプトのために何か書いたのは初めてです。だから、「 - 値の2次元配列を[] []オブジェクト」

任意の提案は

答えて

2

返すgetSheetValues方法歓迎されるであろう、私はこのすべて間違っ:)についてつもりですpossilbleです。したがって、そのエントリはvalues[i][j]としてアクセスする必要があります。ここで、iは範囲の左上隅からの行オフセットで、jは列オフセットです。スプレッドシートの行番号と列番号は、JavaScriptの配列のインデックスとは異なり、1から始まる。具体的には、あなたのミランダ比較

if (columnT[i][0] === "Miranda") 

別の発言であるべきです。 (0, 20, 0, -1);getSheetValuesに入れると、あなたは何かを誤っている可能性があることを示しています。

最後に、getSheetValues()の代わりに.getRange(...).getValues()を使用することをおすすめします。それは一番下に空のセルの束を取得しないことが望ましいなら一つには、あなたは1つが使用することができ、列T.のすべての値を取得するために

var valuesT = sheet.getRange("T1:T").getValues(); 

のように、getRangeにA1表記を渡すことができ

var lastRow = sheet.getLastRow(); 
var valuesT = sheet.getRange("T1:T" + lastRow).getValues(); 
+0

これは非常に役に立ちます、ありがとう、getValuesははるかに良いメソッドです:) – Jensen010

+0

私は、forループ、アクティブな行に一致する文字列を含む行を作るために手を携えてきました。その行からいくつかのセル値を選択して別のシートに移動します。私はいくつかのコードを書き留め、行の内容を配列に格納してから、そのインデックスを行番号に変換しています。しかし、私はまだ私が不足していると思う。午前中に私の質問を編集して、今どこにあるのかを反映させます。 – Jensen010