2017-04-21 3 views
1

Googleシートでは、開始範囲とその範囲からの行数を入力するようにユーザーに指示した後、数字を順番に入力しようとしています。たとえば、ユーザーがセル「C5」を入力して5行を入力すると、結果はセルC5〜C10(1,2,3,4,5)になります。googleシートの範囲を繰り返して値を設定する

すべての行が表示されますが、ユーザーが指定した範囲を反復して各セルに異なる値を設定することはできません。

function placeInCell() { 
     var mySheet = SpreadsheetApp.getActiveSpreadsheet(); 
     var sheet = mySheet.getSheetByName('Second'); 

     var ui = SpreadsheetApp.getUi(); 

     var result = ui.prompt('What cell to start with?', 
             ui.ButtonSet.OK); 

     var result2 = ui.prompt('How many cells?', ui.ButtonSet.OK); 

     // Process the user's response. 
     var button = result.getSelectedButton(); 
     var cell = result.getResponseText(); 

     var button2 = result2.getSelectedButton(); 
     var numCells = result2.getResponseText(); 

     var cellRange = sheet.getRange(cell); 
     cellRange = cellRange.offset(0, 0, numCells); 

     //iterate through the range given by the user and set values 
     //in each row 
     for (var i = 0; i < numCells; i++){ 
      cellRange.setValue(i); 

     }; 
    } 
+0

cellRange [i] [0] .setValue(i)はエラーをスローします。 cellRange [i] [0]は定義されていません – alanb

答えて

2

このようGoogle Appsのスクリプトで

var values = cellRange.getValues(); 
for (var i = 0; i < numCells; i++) { 
    values[i][0] = i; 
} 
cellRange.setValues(values); 
1

それを試してみて、レンジは、例えばのため0..n-1とは異なり、インデックス1..nで対処されます配列。 また、Rangeは[]で配列のように扱うことができません。offsetなどのメソッドを使用する必要があります。 これは、あなたがコメントしたように、 "cellRange [i] [0] .setValue(i)はエラーをスローします。cellRange [i] [0]は未定義です"です。

@ SpiderPigのソリューションを試してみてください。 getRange,setValueまたはoffsetのようなサーバー側の呼び出しの数を最小限に抑えながら、代わりに配列のローカル(クライアント側)で作業します。まず、myRange.getValuesを使用し、次に配列、最後にmyRangeを処理します。 setValues

関連する問題