我正在尝试从电子表格A
获取图表。我将其带入Chart对象,并尝试将其放回电子表格B
。
我总是收到“未知的工作表名称”错误。正如您在代码中看到的那样,我一直在尝试在新图表中添加新范围。当我执行Logger.log(newrange.getSheet())
时,我确实得到了Sheet
而不是SHEETNAME
,就像图表生成器混淆了表单名一样。
发生了什么事?
function updateCharts() {
var ss = SpreadsheetApp.openById("ID");
var sheet = ss.getSheetByName("SHEETNAME");
var charts = sheet.getCharts();
var ss2 = SpreadsheetApp.openById("NEW ID");
var sheet2 = ss2.getSheetByName("SHEETNAME");
for (var c=0; c<charts.length; c++) {
var chart = charts[c];
var ranges = chart.getRanges();
var type = chart.getType();
var info = chart.getOptions();
var builder = chart.modify();
var range = ranges[0];
builder.removeRange(range);
var startRow = range.getRow();
var startCol = range.getColumn();
var numRows = range.getNumRows();
var numCols = range.getNumColumns();
var newrange = ss2.getSheetByName("statistiek").getRange(startRow, startCol, numRows, numCols);
Logger.log(newrange.getSheet());
builder.addRange(newrange);
var title = chart.getOptions().get('title')
builder.setOption('title', title + " " + p);
var newchart = builder.build();
ss2.getSheetByName("statistiek").insertChart(newchart);
}
}
答案 0 :(得分:1)
Logger.log()
需要一个字符串,但是您正在使用newrange.getSheet()
向它提供一个对象。如果您想要工作表的名称,请尝试使用此选项:
Logger.log(newrange.getSheet().getName())
要查看电子表格中所有工作表的名称,请尝试:
var ss = SpreadsheetApp.openById("ID");
var allSheets = ss.getSheets();
for (i in allSheets) {
Logger.log("Sheet " + i + " is named " + allSheets[i].getName());
}