2013-02-20 88 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()); 
} 
相關問題