Google 脚本:从一个选项卡复制一整列,并覆盖另一个选项卡中的列

Google scripts: Copy a full column from one tab, and overwrite column in another tab

我正在尝试为游戏创建一个“简单”的投资计算器。所以我有一个带有市场 API 的选项卡,它每 30 分钟更新一次市场上所有商品的当前价格(选项卡名称:价格),然后 post 将其发送到另一个选项卡(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);

}

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

我现在需要的是一个脚本,它将从价格选项卡中获取一列,post 将其放入 MaxPrices 选项卡,并在每次更新时覆盖自身,而不是 post 将其转换为新的每次列。

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

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

我相信 getFirstColumn() returns 一个整数是第一个 列,在这种情况下,它使您附加数据而不是覆盖它。

试试这个:

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