我有一个功能:
这是问题所在: 我想从新的结果范围中获取值并将值粘贴回来;但是.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 :(得分: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();'。
希望有所帮助!!