2012-09-14 43 views
3

有時,當更改單元格的值時,公式不會在電子表格中自動刷新,並且單元格上顯示註釋以選擇單元格,然後按CTRL + SHIFT + E強制重新加載的公式通過Apps腳本強制進行公式刷新

我想從Apps腳本調用此重載功能。有沒有辦法用Apps Script來做到這一點?我試過Spreadsheet.flush(),但它不工作。

感謝您的幫助, 最好的問候

回答

0

不幸的是這是不可能的觸發使用Google Apps腳本公式的重新評估。

1

也許這個「不可能」的答案已經與新的電子表格或在其他時間改變,因爲2012年

如果存儲單元格的公式,清除單元格,然後設置單元格的公式,似乎重新評估對我來說很好。

下面是我在做什麼一個快速和骯髒的概述:

// highlight a single cell and run this function 
function myFunction() { 
    var curr_cell = SpreadsheetApp.getActiveRange(); 
    var formula = curr_cell.getFormula(); 
    // clear only the contents, not notes or comments or formatting. 
    curr_cell.clearContents(); 
    curr_cell.setFormula(formula); 
} 
+0

像這樣的事情也爲我工作但只有當我在刪除和重新設置公式之間激活另一個單元格時纔會激活另一個單元格: 'var sheet = SpreadsheetApp.getActiveSheet(); sheet.getRange(「A1」)。activate();' 然後再次激活當前的一個。如果我沒有這樣做,單元格不停地掛在「正在加載...」 – janober

0

這應該工作,設置一些其他公式,並恢復它再次

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheets()[0]; 
var range = sheet.getDataRange(); 

var values = range.getValues(); 
var formulas = range.getFormulas() 

for (var i = 0; i < formulas.length; i++) { 
    for (var j = 0; j < formulas[i].length; j++) { 
     if (formulas[i][j]) { 
      var f = sheet.getRange(i + 1, j + 1).clearContent().setFormula('=true'); 
      SpreadsheetApp.flush(); 
      f.setFormula(formulas[i][j]) 
     } 
    } 
}