【问题标题】:Auto fill a column with formulas when new rows are added添加新行时使用公式自动填充列
【发布时间】:2018-01-26 01:36:35
【问题描述】:

我有一个自动化工作流程 (Zapier),只要在 Trello 中添加新卡片,它就会向 Google 表格添加新行。我们用它来跟踪部门等的统计数据。我有一些额外的字段可以将日期字段转换为诸如星期数、日、月、年之类的东西......简单的东西。

我需要编写一个脚本来查找输入电子表格的新行,然后使用预设公式自动填充其他列。

示例布局:

通过自动化填充的列:

a,b,d,e

通过脚本填充的列。

f,g,h,i,j,k

我见过一些类似的脚本,但没有将上面行中的公式作为自动填充的内容。

注意:每一列的公式都可以在上面的行中找到,这是我手动添加的(现在)。因此,理论上,脚本可以引用上面的单元格以使用正确的公式。

注意 2:我不能使用 ARRAYFORMULA 方法,因为 Zapier 会将该行视为有内容并会跳到下一个空行。

【问题讨论】:

  • 对于拒绝您的更改,我深表歉意。我认为副本会获得价值。但是,如果它确实得到了 Michelle 所说的公式,那么它可能是更好的方法,因为它保留了单元格引用。谢谢,这对我来说是一次学习经历。
  • 别担心!团队学习产生成果!

标签: google-apps-script google-sheets google-sheets-formula


【解决方案1】:

我认为这样就可以了。

function fillInFGHIJK()
{
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  var rg=sh.getDataRange();
  var vA=rg.getValues();
  for(var i=0;i<vA.length;i++)
  {
    if(!vA[i][5] && !vA[i][6] && !vA[i][7] && !vA[i][8] && !vA[i][9] && !vA[i][10])
    {
      sh.getRange(i,6,1,6).copyTo(sh.getRange(i+1,6,1,6));//According to Michelle this will works better because the cell references change appropriately
    }
  }
}

【讨论】:

  • 之前拉过单元格的值,能不能拉过公式?
  • 我改了答案再试一次
  • 以这种方式复制公式时,单元格引用会发生什么情况?我建议改用copyTo 方法sh.getRange(i,6,1,6).copyTo(sh.getRange(i+1,6,1,6))。它相当于手动复制,它使用公式完成预期的事情。另外,如果某些列包含值(用作公式参数),它们也会被复制。
  • 啊,是的,谢谢@Michelle 和 Cooper——你的两个脚本的组合对我有用。 copyTo 函数意味着它引用了正确的行。感谢团队!
  • 我认为副本会得到值而不是公式。但我不确定。如果你这么说,我相信你。我真的不经常使用公式。哦,我终于看到问题了。在我的版本中,单元格引用将是错误的。好吧,希望您的版本将获得公式而不是值。我得找个时间试试@Michelle谢谢。很抱歉拒绝编辑。我当时不明白。
猜你喜欢
  • 2022-11-18
  • 2018-04-15
  • 1970-01-01
  • 2016-01-21
  • 2020-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多