2013-03-28 21 views
1

有没有一种API方法可以等同于人们可能期望的方法sheet.getRange().getValuesOrFormulas()要做的事情?这是(伪代码):如何将包含值和公式的行复制到数组中?

for each cell in the range 
    if(cell.getFormula() != '') 
    cell.getFormula(); 
    else cell.getValue() 

如果没有,没有任何人有他们会很愿意分享的自定义函数?

回答

4

不,没有办法。

我不知道你会这样去做什么,不看它如何可能是有用的(因为没有方法可以设置一次)。无论如何,这里是用公式和值范围填充数组的代码。

function valuesAndFormulas() { 
    var range = SpreadsheetApp.getActiveSheet().getDataRange(); 
    var formulas = range.getFormulas(); 
    var values = range.getValues(); 
    var merge = new Array(formulas.length); 
    for(var i in formulas) { 
    merge[i] = new Array(formulas[i].length); 
    for(var j in formulas[i]) 
     merge[i][j] = formulas[i][j] !== '' ? formulas[i][j] : values[i][j]; 
    } 
    //now do something with it 
    Logger.log(merge); 
} 
+0

将一个公式传递给'setValues()'设置公式,以及当我尝试它时。 – Tharkon 2014-06-20 12:36:36

+0

它没有完美地工作,这里有多个报告确认只有'setFormula'正常工作。 – 2014-06-21 10:45:24

+0

所以它不稳定。但它可能会起作用,所以我不会公然解雇它,只是根据具体情况进行评估。我用你的代码(谢谢)收集数据,然后使用'setValues()'来使用它,从而得到期望的结果。 – Tharkon 2014-06-22 18:24:53

相关问题