2017-04-21 23 views
1

在谷歌工作表中,我試圖按順序輸入數字後提示用戶的起始範圍和該範圍內的行數。例如,如果用戶鍵入單元格「C5」並輸入5行,結果應該來自單元格C5 - C10(1,2,3,4,5)谷歌工作表迭代通過一個範圍和設置值

我找到了一種方法來輸入相同的值所有的行,但我似乎無法遍歷用戶給出的範圍,並在每個單元格中設置不同的值。

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

嘗試這種方式

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

在谷歌Apps腳本時,一個範圍與指數1..n解決,不像0..n-1用於例如數組。 另外,範圍不能像[]一樣處理:您需要使用諸如offset等方法。 這就是爲什麼,如你所說,「cellRange [i] [0] .setValue(i)引發錯誤,它說cellRange [i] [0]未定義」。

Try @ SpiderPig的解決方案,它應該爲你工作。它使用一般良好做法或最小化服務器端調用的數量,例如getRange,setValueoffset,而不是在數組本地(客戶端)在數組上工作:首先使用myRange.getValues,然後在Array上工作,最後在myRange上工作。 setValues方法。