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);
  }
}
4

1 に答える 1

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());
}
于 2013-05-23T18:33:59.970 に答える