2017-04-11 1 views
3

をオブジェクトへの配列を変換することはできませんシートのスクリプトをアプリ:私が範囲に配列を書き込むために得ることができないようですsetValuesは、私はGoogleでこれをコーディングしてきた[] []

function basePesa(){ 
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("aux"); 
    var unique = sheet.getRange("C1").setFormula("=unique(A:A)"); 
var Avals = sheet.getRange("C1:C").getValues(); 
var Alast = Avals.filter(String).length; 
var transp = sheet.getDataRange().getValues(); 

var ss = SpreadsheetApp.openById("14Y3xiAa9kdoK_YO_tAVN-YWC9RE1EANV5wm8Ez1sa1o"); 
var base =ss.getSheetByName("Base PESA"); 
var values = base.getDataRange().getValues(); 
var newdata = new Array(values.length); 
var y = 0; 

// Browser.msgBox(transp.length); 

for(var i=0;i<Alast;i++){ 


var tra = Avals[i][0]; 

for(var x =1; x<values.length;x++){ 

if(values[x][18] == tra){ 
    newdata[y] = new Array(values[0].length); 

for(var p=0; p<values[0].length;p++) 
newdata[y][p] = values[x][p]; 

y++; 
} 

} 

    } 
    SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Bco de Dados").getRange("A2:AZ"+(y+1)+"").setValues(newdata); 
// Browser.msgBox(newdata); 


} 

。範囲が一致しているかどうか、また配列が2次元であるかどうかは確かです。どんな指示?

ありがとうございます!

+0

あなたの配列はデバッグモードでどのように見えましたか? –

+0

はい、2D配列のように見えます.http://imgur.com/a/Vh3pB –

+0

テスト用にこのシートのコピーを入手できますか? –

答えて

0

新しいデータアレイの作成が問題だったようです。ここで働いているサンプルは、(Iコメントに不正なコードを置く)である:

function basePesa(){ 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("aux"); 
    var unique = sheet.getRange("C1").setFormula("=unique(A:A)"); 
    var Avals = sheet.getRange("C1:C").getValues(); 
    var Alast = Avals.filter(String).length; 
    var transp = sheet.getDataRange().getValues(); 

    var ss = SpreadsheetApp.openById("14Y3xiAa9kdoK_YO_tAVN-YWC9RE1EANV5wm8Ez1sa1o"); 
    var base =ss.getSheetByName("Base PESA"); 
    var values = base.getDataRange().getValues(); 
    var newdata = [];//new Array(values.length); 
    var y = 0; 

    // Browser.msgBox(transp.length); 

    for(var i=0;i<Alast;i++){ 


    var tra = Avals[i][0]; 

    for(var x =1; x<values.length;x++){ 

     if(values[x][18] == tra){ 
     //newdata[y] = new Array(values[0].length); 

     var test = []; 

     for(var p=0; p<values[0].length;p++) 
     { 
      test.push(values[x][p]); 
      //newdata[y][p] = values[x][p].toString(); 
     } 

     newdata.push(test); 

     y++; 
     } 

    } 

    } 

    SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Bco de Dados").getRange("A2:AZ"+(y+1)+"").setValues(newdata); 

    // Browser.msgBox(newdata); 

} 
+0

男、ありがとう、あなたはロック!なぜ私は古いコードが動作しなかったのか分からないが、あなたのことは確かです! –

+0

この[あなたの質問](http://stackoverflow.com/questions/931872/what-s-the-difference-between-array-and-while-declaring-a-javascript-ar)を見て、それ –

3

アレイ1:[A、B、C] < ---- 1行に適合する、3列

配列2:[[A]、[B]、[C]] < --- 3行、1列に対応

配列3:[[A、B、C]、[A、B、C] 、[A、B、C]] < --- 3行、3列に対応**

**各smaの幅より大きい配列(この場合は3)内のller配列は、より小さい配列のそれぞれについて同じでなければならない。

Click Here for a Visual Example (Image)

+0

今、私は最終的にsetValuesで、私の古い問題を3つの配列の写真は素晴らしいです!多くのありがとう – user3257693

関連する問題