如何在 Google 表格中停止每天特定时间更新公式?

How to stop formulas from updating at a certain time each day in Google Sheets?

我希望 Google 表格在每天的特定时间停止更新与当前日期对应的单元格中的公式,但我不太精通脚本,所以我需要一些帮助。下面是我的一些数据示例。

我有一个 sheet“状态花费时间”,每小时自动更新一次(扩展名为 google sheets)。新的 'Keys' 被添加到 sheet 当它们被添加到扩展中时,即键 '5' 现在不存在,但是当有人在与扩展链接的数据源中创建它时,键 ' 5'及其对应的值将自动添加,因此它会随着数据的增加而频繁更新。

在单独的 sheet 中,我在 sheet“每日平均值”.

中跟踪自动更新的数字的每日平均值

目前在“每日平均值”sheet中,我使用公式计算“状态中花费的时间”中每一列的平均值sheet。此公式已预先填好,供未来几天使用。在每天结束时,我必须转到此 sheet 并复制并粘贴 > 仅值以记录当天的平均值并阻止公式在第二天继续更新。我使用 'Date' 列和 Avg 列在仪表板中显示每日平均值随时间的变化。

我正在寻找的是某种逻辑,它将查看“每日平均值”sheet 中的 'Date' 列,如果它等于当前日期并且时间是 11:59 pm(或其他设定时间),然后自动复制并粘贴 > 仅值。或者类似的东西,这样我就不必每天都进去手动粘贴值了。有没有人有过这样的经历?

您要查找的是 Apps 脚本中的 time-driven trigger。您可以编写脚本并将其设置为每天在特定时间 运行。

编写脚本时可以采用多种方法,但根据您提供的示例,您可以尝试以下代码:

function setDailyAverage() {
  let ss = SpreadsheetApp.getActiveSpreadsheet()
  let avgsheet = ss.getSheetByName("Daily Averages")

  //this is a string with today's date in format mm/dd/yyyy, like in your sample
  let today = new Date().toLocaleDateString("en-US")

  //this will do a search of today's date and return the row number
  let row = avgsheet.createTextFinder(today).findNext().getRow()

  let avgcell = avgsheet.getRange(row,2) //gets column 2 in the row corresponding to today
  let giavgcell = avgsheet.getRange(row,3) //gets column 3 in the row corresponding to today

  //This reads the values in each cell and overwrites the formula with the actual value
  avgcell.setValue(avgcell.getValue())
  giavgcell.setValue(giavgcell.getValue())

}

要添加脚本,请转到“扩展”>“应用程序脚本”并将其粘贴到那里,然后在左侧转到“触发器”>“添加触发器”,然后触发器设置应如下所示:

这将 运行 每天晚上 11 点到午夜之间的脚本,并且几乎只是自动执行您正在执行的相同“复制和粘贴 > 仅值”过程。您仍然需要为每个日期设置 pre-filled 行,因此请记住这一点。使用触发器,您还可以每天自动创建每一行,但我不知道这是否会干扰您的工作流程。