2014-11-14 40 views
0

我有一個功能:它工作正常.getDataRange不是真正的範圍後.setFormula

  1. 發現在表最後一排,
  2. 在 最後一行插入查詢成片加一併添加新記錄 (使用setFormula),
  3. 執行電子表格應用程序刷新強制所有 掛起的更改更新,因此可以得到堅實的範圍,所以我想 !

問題出在這裏: 我想從新的結果範圍中獲取值並將值粘貼回去;但.getDataRange返回原始的.dataRange,而不是新的。

`//get new ranges after formula run 
var SheetNow = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("New Records"); 
var rangeNow = SheetNow.getDataRange(); 
var recordsNow = RangeNow.getValues(); 
rangeNow.setValues(recordsNow);` 

這不起作用,因爲它只是讓我在運行函數時的原始數據範圍,並不會反映所產生的更大的範圍由插入式添加的新記錄。

我很困惑爲什麼getDataRange在刷新後甚至在聲明新的變量來獲取表單和範圍之後都不準確。

任何想法嗎?

回答

0

試圖以這種方式實施它,它對我很好。

function getNewFormulaRange(){ 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var last_row = sheet.getLastRow(); 
    var last_column = sheet.getLastColumn(); 
    Logger.log('1: ' + last_row); 
    var range_input = sheet.getRange(1,1,last_row,last_column); 
    var cell = sheet.getRange(last_row+1,10); 
    cell.setFormula("=SUM(B3:B4)"); 
    SpreadsheetApp.flush(); 
    var last_row = sheet.getLastRow(); 
    var last_column = sheet.getLastColumn(); 
    var new_range = sheet.getDataRange(); 
    Logger.log(new_range.getLastColumn()); 
    Logger.log(last_row); 
    Logger.log(' col: ' + last_column); 
} 

此外,我看到你的代碼中有一個錯字提供'var recordsNow = RangeNow.getValues();'相反,它應該是'var recordsNow = rangeNow.getValues();'。

希望幫助!

相關問題