2017-02-15 36 views
0

基本的には、スクリプトを介してスプレッドシートに一定数の値を挿入することを試みています。私はそれをセットアップしている方法で、それはxの時間の関数を呼び出す、別々に各値を挿入します。getNumColumns()は更新されませんか?

私は4つの値を持っているとしましょう。私は行1、列1、列2、列3、列4にすべての値を挿入したいと思います。私のコードで今起こっていることは、列1にすべての値を挿入するだけで、列1では、最後の値で終わるだけです。

var column = sheet.getDataRange().getNumColumns() + 1; 

sheet.getRange(1, column).setValue(question); 

私はgetNumColumnsにその+ 1で追加した場合、私は+ 1を使用しない場合、それは、だから、基本的にすべての4つの値を追加しますが、カラム2に、3、4、および5になりますgetNumColumns()は決して更新されず、値が挿入されるたびに1にとどまります。これはなぜ今のところ答えがあるのか​​分かりません。

EDITED CODE:

var range = sheet.getDataRange(); 
    var data = range.getValues(); 


    if (range.isBlank()){ 
    var column = 1; 
    sheet.getRange(1, column).setValue(question); 
    }else{ 
    var column = sheet.getDataRange().getNumColumns(); 
    sheet.getRange(1, column).setValue(question); 
    } 

答えて

0

あなたのデータ範囲等のカラム1、あなたを通して初めての列2を取得するために、1 + 1を追加することを意味し、として初期化のようにそれは最も簡単な方法は、書くことがおそらく見えますgetDataRange().getNumColumns() == 1の場合は1を追加しませんが、それを2回おきに追加します。 APIが許せば、データ範囲を1ではなく0に初期化する方法を見つける方が良いでしょう。

編集:2番目の考えでは、列の数が1ではなく、データ範囲が空白であるかどうかを確認する方が安全です。isBlank()メソッドを使用できます。

+0

説明したとおりに編集を試みましたが、その前にあったものを上書きするたびに、すべての値を最初の列に挿入したがっています。 –

+0

新しいコードでオリジナルの質問を編集しました。 –

+0

'else'文に' + 1'が必要です。 – bluecanary

関連する問題