如何使用谷歌应用程序脚本从一张表中获取特定的图表并将其粘贴到另一张表上,在特定范围内



问题:我一张纸上有06张图表。因此脚本执行以下操作:

它遍历名为list的Sheet中的ticker列表。

它将每个正在迭代的股票代码粘贴到表单模板的单元格A3中

从名为模板的工作表中复制其中一个图表

粘贴到表单列表的单元格E5中

下面的脚本一直运行到最后一行,然后我得到了以下错误:TypeError:ss.getRange(…(.insertChart不是函数

这是我正在使用的脚本:

function updateTickers() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("List");
var tickerRng = ss.getRange(2, 1, ss.getLastRow(), 1).getValues();
var allSharesSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Template");
var startRow = 2;
for (var a = 0; a < tickerRng.length; a++) {
var ticker = tickerRng[a][0];
if (ticker == 'nndm') {
if (ticker[0] != '') {
var setRow = parseInt(a) + startRow;
allSharesSheet.getRange("a3").setValue(ticker);
var chart1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(ticker).getCharts()[0];
ss.getRange(setRow, 5).insertChart(chart1); //This is where the error pops up.
}
}
}
}

感谢您的帮助。

我相信你的目标如下。

  • 您想要将ticker的工作表中的图表复制到工作表";列表">
  • 您要将复制的工作表移动到单元格";E5";。
    • 在脚本中,似乎要将复制的工作表移动到getRange(setRow, 5)。这个答案随之而来

修改点:

  • insertChart((的方法用于Class Sheet。Ref但是在您的脚本中,此方法用于Class Range。我认为你的问题是由于这个原因。
    • 我已经在评论中提到了这一点
  • 为了移动图表的位置,需要更新图表

当以上几点反映到您的脚本中时,它变成如下。

修改的脚本:

请按如下方式修改您的脚本。

发件人:
ss.getRange(setRow, 5).insertChart(chart1); //This is where the error pops up.
收件人:
ss.insertChart(chart1.modify().setPosition(setRow, 5, 0, 0).build());

或者,您想将图表放在单元格"中;E5";,请使用以下脚本。

ss.insertChart(chart1.modify().setPosition(5, 5, 0, 0).build());

参考文献:

  • 插入图表(图表(
  • 修改((

最新更新