【问题标题】:How to make this Google Sheet script refresh every 10 seconds如何使此 Google Sheet 脚本每 10 秒刷新一次
【发布时间】:2022-08-06 15:02:25
【问题描述】:

该脚本在 Google Sheet 中用于通过在扫描表大小(行数和列数)后使用 flush 来触发股票代码监视列表更新。目前,使用 Google Sheet Time-Driven trigger 每分钟只能运行一次。有没有办法让它每 10 秒刷新和更新一次以绕过时间驱动的触发器限制?

感谢任何可以帮助的人~

function forceRefreshSheetFormulas(sheetName) {
  var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = activeSpreadsheet.getSheetByName(\'*Table Name*\');
  var range = sheet.getDataRange();
  var numCols = range.getNumColumns();
  var numRows = range.getNumRows();
  var rowOffset = range.getRow();
  var colOffset = range.getColumn();

  // Change formulas then change them back to refresh it
  var originalFormulas = range.getFormulas();

  //Loop through each column and each row in the sheet
  //`row` and `col` are relative to the range, not the sheet
  var ranges = []
  var blank = []
  var original = []
  for (row = 0; row < numRows; row++) {
    for (col = 0; col < numCols; col++) {
      if (originalFormulas[row][col] != \"\"){
        ranges.push( `\'*Table Name*\'!${columnToLetter(col + colOffset)}${row + rowOffset}` )
        blank.push(\'\')
        original.push(`${originalFormulas[row][col]}`)
      };
    }
  };
  updateGoogleSheet(ranges,blank)
  SpreadsheetApp.flush();
  updateGoogleSheet(ranges,original)
};
function updateGoogleSheet(ranges,values) {
  var spreadsheetId = SpreadsheetApp.getActiveSpreadsheet().getId()
  var data = ranges.map((e, i) => ({ range: e, values: [[values[i]]] }));
  Sheets.Spreadsheets.Values.batchUpdate({ data, valueInputOption: \"USER_ENTERED\" }, spreadsheetId);
}
function columnToLetter(column) {
  var temp, letter = \'\';
  while (column > 0) {
    temp = (column - 1) % 26;
    letter = String.fromCharCode(temp + 65) + letter;
    column = (column - temp - 1) / 26;
  }
  return letter;
}
  • 您可以通过浏览器使用 google.script.run 从 setInterval 函数触发,但只要交换处于打开状态,您就必须将浏览器留在该页面上,并确保禁用空白屏幕。
  • 嗨库珀,你介意告诉我我应该把它放在脚本中的哪个位置是最佳位置吗?非常感谢您的回复!
  • 对话框或侧边栏中的任何位置,以便它在浏览器中而不是在服务器上运行。我会把它当作纯 javascript 来做。
  • 嗨 Cooper,首先,很抱歉我没有提到我不是程序员。所以当涉及到这种设置时,有很多我不熟悉的东西。该脚本来自此处的另一个用户。你介意帮我优化一下代码,让它像每 10 秒循环一次吗?再次非常感谢您!
  • 我将在这里补充一点,Google 表格对每个帐户每天的总脚本运行时间有限制。最后我检查了它是 6 小时(尽管它最近可能增加了,因为我看到每个电子表格的最大单元数刚刚从 5M 增加到 10M)。但是,如果您想全天候每 10 秒运行一次触发脚本,那必须是只要在所有电子表格中的整个帐户上运行的脚本;即便如此,每次执行脚本的运行时间也需要少于 2.5 秒。所以浏览器级别可能是您唯一的选择。

标签: google-apps-script google-sheets


【解决方案1】:

如果您需要高级应用脚本帮助,您可以访问https://appsscriptexpert.com/,他们可以帮助提供高级解决方案 -

【讨论】:

  • 不要投票,不要投票删除。而是标记为垃圾邮件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-26
  • 1970-01-01
  • 2022-01-11
  • 2016-03-10
  • 1970-01-01
  • 2023-04-11
相关资源
最近更新 更多