2016-07-19 35 views
0

質問からすぐにわかりにくい場合は、Google Apps Scriptを初めて使用しています。私はブックのフォーム提出シートの各行を実行し、forループを使用して最初のセルの値に基づいて(同じブック内の)2番目のシート/範囲を更新するスプレッドシート関数を記述しようとしています。しかし、私は関数を実行すると何も起こりません。getRange、getDataRange、getActiveRangeの違いは?

私は疑問の範囲をどのように定義しているのかは間違いないと確信していますが、100%確実ではありません。ここで私が書いたものの修正版です:

function update() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 

    var secondSheet = ss.getSheets()[1]; 
    var submissionSheet = ss.getSheets()[0]; 

    var secondRowEnd = secondSheet.getLastRow(); 
    var submissionRowEnd = submissionSheet.getLastRow(); 

    var secondColumnEnd = secondSheet.getLastColumn(); 
    var submissionColumnEnd = submissionSheet.getLastColumn(); //used to define ranges dynamically 

    var secondRange = secondSheet.getValues(); 
    var submissionRange = submissionSheet.getValues(); 

    for(var i = 2; i <= submissionRowEnd; i++) { 

    var rock = secondRange.getCell(i, 1).getValue(); 
    var paper = secondRange.getCell(i, 2).getValue(); 
    var scissors = secondRange.getCell(i, 3).getValue(); 

    var status = secondRange.getCell(i, 4).getValue(); 
    var forStatus = secondRange.getCell(i, 5).getValue(); 

    if (status === "Do X!") { 
     for(var j = 2; j <= submissionRowEnd; j++) { 

     var jrock = submissionRange.getCell(j, 1).getValue(); 
     var jpaper = submissionRange.getCell(j, 2).getValue(); 
     var jscissors = submissionRange.getCell(j, 3).getValue(); 
     var jstatus = submissionRange.getCell(j, 4).getValue(); 

     if (status === forStatus) { 
      jrock.setValue(rock); 
      jpaper.setValue(paper); 
      jscissors.setValue(scissors); 
     } else { /*do nothing*/ } 
     } 
    } 
    } 

私は今、数週間のために、このコードのわずかに異なるバージョンを見つめてきたので、この上の任意およびすべての目を大きくなり、大歓迎します!

+0

Javascriptを!= Javaとあなたのコードから、あなたがそうするJavaタグを削除してください、Javascriptを使用しているようです。 – Thomas

+0

私自身の質問に答えました:getCell()の代わりにgetRange()を使用して個々のセルを分離してください。getValue()はトリックを行ったようです。私はそれが "かなり"の解決策であるかどうかを知るにはあまりにも慣れていませんが、うまくいきます! – Maru

答えて

1

Spreadsheet ServiceのApps Script APIリファレンスをチェックアウトしてください。すべての機能がそこに文書化されています。

getRange()は複数の実装があります。ここではあなたが必要とする方法の説明へのリンクがあります。

関連する問題