【问题标题】:RefreshImport function not working in Google SheetsRefreshImport 功能在 Google 表格中不起作用
【发布时间】:2021-11-09 20:25:37
【问题描述】:

我试图用我的工作表数据填充它,但是

var dataRange = sheet.getDataRange();

得到一个错误。我该怎么办?

    function RefreshImports() {
  var lock = LockService.getScriptLock();
  if (!lock.tryLock(5000)) return;             // Wait up to 5s for previous refresh to end.

  var id = "1r7TgCWXfjmcjufT0yz9qcFDlr482SdHDHlZYblXyAt0";  // [YOUR SPREADSHEET ID]
  var ss = SpreadsheetApp.openById(id);
  var sheet = ss.getSheetByName("crypto"); // sheet name
  var dataRange = sheet.getDataRange();
  var formulas = dataRange.getFormulas();
  var content = "";
  var now = new Date();
  var time = now.getTime();
  var re = /.*[^a-z0-9]import(?:xml|data|feed|html|range)\(.*/gi;
  var re2 = /((\?|&)(update=[0-9]*))/gi;
  var re3 = /(",)/gi;

  for (var row=0; row<formulas.length; row++) {
    for (var col=0; col<formulas[0].length; col++) {
      content = formulas[row][col];
      if (content != "") {
        var match = content.search(re);
        if (match !== -1 ) {
          // import function is used in this cell
          var updatedContent = content.toString().replace(re2,"$2update=" + time);
          if (updatedContent == content) {
            // No querystring exists yet in url
            updatedContent = content.toString().replace(re3,"?update=" + time + "$1");
          }
          // Update url in formula with querystring param
          sheet.getRange(row+1, col+1).setFormula(updatedContent);
        }
      }
    }
  }

  // Done refresh; release the lock.
  lock.releaseLock();

  // Show last updated time on sheet somewhere
  sheet.getRange(7,2).setValue("Rates were last updated at " + now.toLocaleTimeString())
}

我设置了触发器。

【问题讨论】:

  • 我已经解决了。我只是愚蠢:) 我不知道工作表名称是什么,现在我知道了

标签: function google-apps-script google-sheets runtime-error


【解决方案1】:

不确定你想做什么,你的解释还有很多不足之处。

因此,这是一种将公式放入名为“Destination”的工作表的简单方法。

function RefreshImports() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName("crypto");
  const rg = sh.getDataRange();
  const formulas = rg.getFormulas();
  sh.getRange(1,1,formulas.length,formulas[0].length).setFormulas(formulas);
}

【讨论】:

  • 我想从单元格中获取公式并将其放回去,以刷新所有这些公式。什么都不能动,
  • 应该为你做的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-08
  • 2023-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多