【问题标题】:Google scripts: Copy a full column from one tab, and overwrite column in another tab谷歌脚本:从一个标签复制一整列,并覆盖另一个标签中的列
【发布时间】:2021-09-13 23:36:33
【问题描述】:

我正在尝试为游戏创建一个“简单”的投资计算器。因此,我有一个带有市场 API 的选项卡,该选项卡每 30 分钟更新一次市场上所有商品的当前价格(选项卡名称:价格),并在每次更新时将其发布到另一个选项卡(MaxPrices)的新列中。目前,我的脚本是

function readSalesNum() {
var sheetFrom = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Prices");
var sheetTo = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("MaxPrice");

// Copy from 2nd row, 5th column, all rows for one column 
var valuesToCopy = sheetFrom.getRange(2, 5, sheetFrom.getLastRow(), 1).getValues();
var itemnames = sheetFrom.getRange(2, 1, sheetFrom.getLastRow(), 1).getValues();

//Paste to another sheet from first cell onwards
sheetTo.getRange(1,sheetTo.getLastColumn()+1,valuesToCopy.length,1).setValues(valuesToCopy);

//My attempt to make it overwrite itself
sheetTo.getRange(1,sheetTo.getFirstColumn(),itemnames.length,1).setValues(itemnames);

}

这会将价格选项卡中更新的市场价格发布到每个项目的 MaxPrices 选项卡中,每隔 X 时间我在触发器中设置一个新列。

我现在需要的是一个脚本,它将从价格选项卡中获取一列,将其发布到 MaxPrices 选项卡中,并在每次更新时覆盖自身,而不是每次都将其发布到新列中。

脚本图片和发生的事情/我想要发生的事情:https://imgur.com/a/d1tB0hU

【问题讨论】:

  • 你能添加一个截图来看看你当前的结果是什么吗?我有点不知道你到底在问什么
  • Spreadsheet setup 我希望将价格选项卡中的 A 列发布到 MaxPrices 选项卡的 A 列中,并且每次触发器运行时,它只会覆盖而不是发布到新列中
  • 只修复列名不能解决?
  • 不确定你的意思@KinSiang

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


【解决方案1】:

我想我在你的尝试中发现了一个小错误。

我相信getFirstColumn() 返回一个 int,它是第一个 empty 列,在这种情况下,您可以附加数据而不是覆盖它。

试试这个:

sheetTo.getRange(1,1,itemnames.length,1).setValues(itemnames);
sheetTo.getRange(1,2,valuesToCopy.length,1).setValues(valuesToCopy);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 2013-04-17
    • 1970-01-01
    • 2011-01-14
    • 2021-09-04
    • 2015-06-24
    相关资源
    最近更新 更多