首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >防止IMPORTDATA刷新

防止IMPORTDATA刷新
EN

Stack Overflow用户
提问于 2021-10-09 07:03:46
回答 2查看 94关注 0票数 1

我有一个脚本运行,它使用IMPORTDATA从一个网站捕获数据。每一小时,它都会进入网站,获取一个价格值,并将其保存在一个单元格中。所以我的每个dat都有24个细胞排在一起,被填充。

我的问题是每一个小时,每一个细胞都在更新。

假设它在晚上11点运行,结果是5500。发生的情况是,以前填充的每个单元格都更改为5500个。

据我所知,IMPORTDATA似乎每小时都与websit同步。这不是我想要的.我想这样做,这样一旦数据被导入使用imported数据,链接就会中断,数据就不会改变。

有人知道我如何修改我的代码来实现这一点吗?

谢谢你们。

代码语言:javascript
运行
复制
function pricesearchsheet2() {

    var date = new Date();
    var currenthour = date.getHours();
    var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();

  var targetcell = 1

// set the target cell based on the current hour of the day
  if (currenthour == 0) {
  var targetcell = "B6";
}
if (currenthour == 1) {
  var targetcell = "C6";
}
if (currenthour == 2) {
  var targetcell = "D6";
}
if (currenthour == 3) {
  var targetcell = "E6";
}
if (currenthour == 4) {
  var targetcell = "F6";
}
if (currenthour == 5) {
  var targetcell = "G6";
}
if (currenthour == 6) {
  var targetcell = "H6";
}
if (currenthour == 7) {
  var targetcell = "I6";
}
if (currenthour == 8) {
  var targetcell = "J6";
}
if (currenthour == 9) {
  var targetcell = "K6";
}
if (currenthour == 10) {
  var targetcell = "L6";
}
if (currenthour == 11) {
  var targetcell = "M6";
}
if (currenthour == 12) {
  var targetcell = "N6";
}
if (currenthour == 13) {
  var targetcell = "O6";
}
if (currenthour == 14) {
  var targetcell = "P6";
}
if (currenthour == 15) {
  var targetcell = "Q6";
}
if (currenthour == 16) {
  var targetcell = "R6";
}
if (currenthour == 17) {
  var targetcell = "S6";
}
if (currenthour == 18) {
  var targetcell = "T6";
}
if (currenthour == 19) {
  var targetcell = "U6";
}
if (currenthour == 20) {
  var targetcell = "V6";
}
if (currenthour == 21) {
  var targetcell = "W6";
}
if (currenthour == 22) {
  var targetcell = "X6";
}
if (currenthour == 23) {
  var targetcell = "Y6";
}
if (currenthour == 24) {
  var targetcell = "Z6";
}


    for (var sheet of sheets) {
        sheet.getRange(targetcell)
            .setValue('=--SPLIT(REGEXEXTRACT(JOIN(",",IMPORTDATA(B1)),"LCPrice"":""(.*)"), CHAR(34))')
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-09 07:42:07

我相信你的目标如下。

  • 您希望将值放到带有公式的电子表格中。
  • 将值放入电子表格后,要将公式转换为值,以避免刷新公式更新值。

在这种情况下,使用copyTo作为值复制值而不使用公式如何?当您的脚本运行时,如下所示。

修改脚本:

作为另一个修改点,我认为当我看到您的if语句时,它可能会被转换成一个数组。还有,我思考过这个问题。

代码语言:javascript
运行
复制
function pricesearchsheet2() {
  var date = new Date();
  var currenthour = date.getHours();
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  var ar = ["B6", "C6", "D6", "E6", "F6", "G6", "H6", "I6", "J6", "K6", "L6", "M6", "N6", "O6", "P6", "Q6", "R6", "S6", "T6", "U6", "V6", "W6", "X6", "Y6", "Z6"];
  var targetcell = ar[currenthour];
  for (var sheet of sheets) {
    sheet.getRange(targetcell).setValue('=--SPLIT(REGEXEXTRACT(JOIN(",",IMPORTDATA(B1)),"LCPrice"":""(.*)"), CHAR(34))');
    SpreadsheetApp.flush();
    var range = sheet.getDataRange();
    range.copyTo(range, { contentsOnly: true });
  }
}
  • 运行此脚本时,在将公式放入单元格后,这些值将复制到与值相同的范围,而无需使用该公式。由此,这些值是固定的。

参考文献:

票数 1
EN

Stack Overflow用户

发布于 2022-04-17 15:05:57

尝试使用Coupler.io。它允许将数据从一个电子表格复制到另一个电子表格(或从一个工作表复制到另一个电子表格)。就你而言,你需要:

  • 在“当前值”表设置脚本将所需值导入单元格A1
  • 在附加模式下设置从“当前值”到“历史记录”工作表的Coupler.io GSheet -> Gsheet集成。
  • 设置一个小时计划,您将得到每个小时的值,将新值复制到“历史记录”工作表中。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69504486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档