2013-02-20 75 views
0

我试图从电子表格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); 
    } 
} 

回答

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()); 
} 
相关问题