0

チャートサービスは初めてで、この投稿についてさらに詳しく説明したいと考えていました。Googleチャートオブジェクトエラー

同じ「オブジェクトタイプが列タイプと一致しない」という問題が発生していますが、行をチェックして、データが同じタイプであることを確認しました。シート全体をプレーンテキスト形式として設定すると、グラフは正しく実行され、エラーは発生しません。しかし、フライトの日付を使用したり、フライト時間を合計したりするすべてのフィルターと関数を失い、ワークブックの他のシートでフライトタイプをカウントします。

グラフを使用する前に列データを文字列化する方法はありますか?(単に)。それが問題だった場合に備えて、文字列ヘッダーを含まないようにデータ範囲を設定しましたが、それも機能しませんでした。

サンプルデータシートへのリンク:サンプルデータシート

コードは次のとおりです。

      function doGet(){
    //Get the data from spreadsheet
    var ss = SpreadsheetApp.openById(ScriptProperties.getProperty('hoistLog'));
    var sheet = ss.getSheetByName('Flight Tracking');
    var data = sheet.getDataRange();

    //Filters
    var unitFilter = Charts.newCategoryFilter()
    .setFilterColumnIndex(22)
    .build();

    var missionTypeFilter = Charts.newCategoryFilter()
    .setFilterColumnIndex(2)
    .build();

    //Charts
    var missionTypePieChart = Charts.newPieChart()
    .setDataViewDefinition(Charts.newDataViewDefinition().setColumns([2]))
    .setDimensions(550, 350)
    .setTitle('Mission Types')
    .set3D()
    .build();

    var unitTypePieChart = Charts.newPieChart()
    .setDataViewDefinition(Charts.newDataViewDefinition().setColumns([22]))
    .setDimensions(550, 350)
    .setTitle('Flights By Unit')
    .set3D()
    .build();

    var tableChart = Charts.newTableChart()
    .setDataViewDefinition(Charts.newDataViewDefinition().setColumns([0, 2, 22, 23, 24, 25,     33, 34, 35, 36, 37]))
    .setDimensions(1100, 500)
    .build();

    //Dasboard
    var dashboard = Charts.newDashboardPanel().setDataTable(data)
    .bind([unitFilter, missionTypeFilter], [missionTypePieChart, unitTypePieChart,   tableChart])
    .build();

    var app = UiApp.createApplication();
    var filterPanel = app.createHorizontalPanel();
    var chartPanel = app.createHorizontalPanel();
    var tablePanel = app.createVerticalPanel();
    filterPanel.add(unitFilter).add(missionTypeFilter).setSpacing(10);
    chartPanel.add(missionTypePieChart).add(unitTypePieChart).setSpacing(10);
    tablePanel.add(tableChart).setSpacing(10);

                        dashboard.add(app.createVerticalPanel().add(filterPanel).add(chartPanel).add(tablePanel));
    app.add(dashboard);
    return app;  
   }

よろしくお願いします...

4

3 に答える 3

1

問題はラインvar dashboard = Charts.newDashboardPanel().setDataTable(data)にあり、データはここの範囲です。あなたはそれをどういうわけかそのように変換する必要があります:

//Dasboard
var vals=data.getValues();
var dataTable=Charts.newDataTable();
for (var i in vals[0]) {
  dataTable.addColumn (Charts.ColumnType.STRING, ""+i);
}
for (var i in vals) {
  var x=vals[i];
  for (var j in x) {
    x[j]=""+x[j];
  }  
  dataTable.addRow (vals[i]);
}  
var dashboard = Charts.newDashboardPanel().setDataTable(dataTable)
.bind([unitFilter, missionTypeFilter], [missionTypePieChart, unitTypePieChart,   tableChart])
.build();

次に、何かを表示します。ただし、変換を採用してテーブルにさらに合わせることができます(ここでは、すべてが文字列に変換され、ヘッダーは0、1、2 ...になります)。

于 2013-01-04T19:55:06.600 に答える
0

データが追加された新しく作成されたスプレッドシートでも、次のことがわかりました。

var data = sheet.getDataRange();

動作していませんでした。

代わりに、範囲に名前を付け、名前で指定して、データ範囲を入力されたデータに制限しました。

var data = ss.getRangeByName("theData");

意図したデータ範囲外の何かを見つけているよう.getDataRangeです。

于 2013-05-02T09:39:41.460 に答える
0

日付列のシートに空白が含まれている場合は、シートを開き、「オブジェクトタイプが列タイプと一致しません」というエラーを防ぐために、それらの列を「数値>プレーンテキスト」としてフォーマットします。

于 2013-06-13T06:49:57.813 に答える