2017-01-06 6 views
1

あるシートから別のシートにいくつかのデータをコピーして通過しようとしています。私は、次のようなデータ構造を持っている - >getValues()return undefined

私は(シート1)をコピーしたいもの:

dataname value 
data1  value1 
data2  value2 
data3  value3 
data4  value4 

最終結果(のSheet2):

day1 value1 value2 value3 value4 
day2 value1 value2 value3 value4 
day3 value1 value2 value3 value4 

をあなたが理解かもしれませんが、Sheet1のデータシート2上で毎日リフレッシュされ、コピーされます。ここで

は、私が使用しているスクリプトです:

function getdata() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet1");; 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet2") 
    var data = ss.getRange('B1:B10').getValues()[0][0]; 
    sheet.appendRow([data[1],data[1],data[2],data[3],data[4],data[5],data[6]]); 
} 

私はそれは非常に基本的な質問です知っているが、私はまだgetValues()が実際にどのように機能するかを理解していません。上のスクリプトでは、私は以下の結果を得ました:

undefined undefined undefined undefined undefined undefined undefined 

なぜですか?私は何をすべきか ?

ありがとうございました!

答えて

3

getValues()は、値の配列の配列であるObject[][]を返します。
var data = ss.getRange('B1:B10').getValues()[0][0];を実行すると、最も左上の値をとり、データに保存します。

私はそのセルに何が入っているのか分かりませんが、オフセットを1にしてサブセット化すると空の文字列とみなされます。これは例外をスローするのではなく、未定義を返します。

何(おそらく)あなたがやりたいことは、このようなものです:

sheet1から行2-7の2列目を取り、それを転置し、Sheet2のためにそれを追加し
var data = ss.getRange('B1:B10').getValues(); 
sheet.appendRow([data[1][1],data[2][1],data[3][1],data[4][1],data[5][1],data[6][1]]); 

2

ここで、データの変数では、範囲B1:B10の最初の値のみが格納されます。

Logger.log(data); 

そして、コードを実行した後にview-> logsに移動するか、Ctrl + Enterを押して値を確認します。

あなたは2次元配列形式でシートの値を格納する場合さて、あなたはこれを使用する必要があります。

var data = ss.getDataRange().getValues(); //Here, ss is what you have declared earlier 

今、あなたはロガーを使用してデータ値を確認することができます。あなたが唯一のB1たい場合

また、:

var data = ss.getRange("B1:B10").getValues(); 

そして今、あなたは

Logger.log(data); 
Logger.log(data[3]); 

を使用することができますし、あなたが何を望むかを取得します:配列のB10値を、次のように書きます。