Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 自动展开公式,然后复制粘贴值_Javascript_Google Apps Script_Google Sheets_Google Sheets Formula - Fatal编程技术网

Javascript 自动展开公式,然后复制粘贴值

Javascript 自动展开公式,然后复制粘贴值,javascript,google-apps-script,google-sheets,google-sheets-formula,Javascript,Google Apps Script,Google Sheets,Google Sheets Formula,我有一个函数,可以向某些标题行单元格添加自动展开公式 在下一行代码中,我获取显示值,然后将它们发布回工作表 我担心在自动展开公式完成展开之前,我将获得其范围内的值 这将r.getDisplayValues()在自动扩展完成之前获取值?从而获得具有空白数据的值,这些数据应该包含 我已经测试了各种场景,但这不是确定的 而且,我在搜索这篇文章时也没有找到任何东西 多谢各位 function setFormulasAE_n() { var ss =SpreadsheetApp.getActiv

我有一个函数,可以向某些标题行单元格添加自动展开公式

在下一行代码中,我获取
显示值
,然后将它们发布回工作表

我担心在自动展开公式
完成
展开之前,我将获得其范围内的值


这将
r.getDisplayValues()在自动扩展完成之前获取值?从而获得具有空白数据的值,这些数据应该包含

我已经测试了各种场景,但这不是确定的

而且,我在搜索这篇文章时也没有找到任何东西

多谢各位

function setFormulasAE_n() {
  var ss    =SpreadsheetApp.getActive();
  var sheet =ss.getSheetByName('Elements');
  var LC    = sheet.getLastColumn();
  var LR    = sheet.getLastRow();

  //Auto-expanding Formulas to be added
  //Two dim array with 1 row
  var formulas = [[
"=ArrayFormula({\"ig_TagsHistorical\";iferror(vlookup(INDIRECT(\"Elements!A2:A\"&counta(Elements!$AJ$1:$AJ)), \'HelperElements_(ignore)\'!$A$2:$G, {5}, 0))})",
  "=ArrayFormula({\"Additional Networks\";iferror(vlookup(INDIRECT(\"Elements!A2:A\"&counta(Elements!$AJ$1:$AJ)), \'Helper_(ignore)\'!$A$2:$D, {4}, 0))})",
 ]];

  //Add auto-expanding formulas to Cell(s)
  var cell = sheet.getRange(1,LC+1,1,formulas[0].length);
  cell.setFormulas(formulas);

  //Get range and post back Display Values
  var r = sheet.getRange(1,LC+1,LR,formulas[0].length);
  var v = r.getDisplayValues();
  r.setValues(v)

}
脚本中使用的
setFormulas()
函数是同步的,这本质上意味着指令后面的代码在函数完成执行之前不会执行

因此,
r.getDisplayValues()
将始终在自动展开后获取值

要确保获得的值是预期值,可以在
单元格.setFormulas(formulas)
代码行之后使用
flush()
函数。
flush()
所做的基本上是应用所有挂起的电子表格更改-更具体地说是您需要设置的公式

此外,您可以查看这些链接,因为它们可能对您有所帮助:

  • )

脚本中使用的
setFormulas()
函数是同步的,这本质上意味着指令后面的代码在函数完成执行之前不会执行

因此,
r.getDisplayValues()
将始终在自动展开后获取值

要确保获得的值是预期值,可以在
单元格.setFormulas(formulas)
代码行之后使用
flush()
函数。
flush()
所做的基本上是应用所有挂起的电子表格更改-更具体地说是您需要设置的公式

此外,您可以查看这些链接,因为它们可能对您有所帮助:

  • )


有什么问题吗?这将
r.getDisplayValues()在自动扩展完成之前获取值?因此,使用空白数据获取应该包含数据的值。也许您应该在setFormulas()之后立即尝试SpreadsheetApp.flush()。谢谢,我将添加这一点。问题是什么?这是否
r.getDisplayValues()在自动扩展完成之前获取值?因此,可以使用空白数据获取应该包含数据的值。也许您应该在setFormulas()之后尝试SpreadsheetApp.flush()。谢谢,我将添加这一点