如何将包含值和公式的行复制到数组中?

时间:2013-03-28 02:10:24

标签: google-apps-script google-sheets

是否有一种API方法与人们可能期望的名为sheet.getRange().getValuesOrFormulas()的方法相同?那是(伪代码):

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

如果没有,是否有人有他们愿意分享的自定义功能?

1 个答案:

答案 0 :(得分: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);
}