使用应用程序脚本从数据透视表创建时,不会显示图表图例标签

时间:2017-12-24 13:25:18

标签: charts google-apps-script

我尝试使用以下代码从我创建的数据透视表构建图表:

   var requests = [{
    "updateCells": {
      "rows": {
        "values": [{
            "pivotTable": {
              "source": {
                "sheetId": firstSheetId,
                "startRowIndex": 0,
                "startColumnIndex": 0,
                "endRowIndex": ranges.length,
                "endColumnIndex": question.length + 3
              },
              "rows": [{
                  "sourceColumnOffset": 2,
                  "showTotals": false,
                  "sortOrder": "ASCENDING",
                  "valueBucket": {
                    "buckets": [
                      {
                        "stringValue": question[i-3]
                      }
                    ]
                  }
                }
              ],
              "columns": [
                {
                  "sourceColumnOffset": i,
                  "sortOrder": "ASCENDING",
                  "showTotals": false
                }
              ],
              "values": [
                {
                  "summarizeFunction": "COUNTA",
                  "sourceColumnOffset": i
                }
              ],
              "valueLayout": "HORIZONTAL"
            }
          }
        ]
      },
      "start": {
        "sheetId": fourthSheetId,
        "rowIndex": index,
        "columnIndex": 0
      },
      "fields": "pivotTable"
    }
  }
  ];

  var batchUpdateRequest = Sheets.newBatchUpdateSpreadsheetRequest();
  batchUpdateRequest.requests = requests;

  // Add additional requests (operations)
  var result = Sheets.Spreadsheets.batchUpdate(batchUpdateRequest, ss.getId());

然后,我尝试使用创建的数据透视表使用以下代码制作图表,但图表图例标签不会出现在图表中。但是,当用鼠标选择数据透视表并单击"插入 - >图表"从Google电子表格菜单中,标签显示正常。

    var textStyleBuilder = Charts.newTextStyle().setColor('#0000FF');
var style = textStyleBuilder.build();

for (i = 0; i < tableDim.length; i++) {
  /* Get pivot table dimensions */
  var sRow        = (tableDim[i].startRow);
  var nRow        = (tableDim[i].endRow - tableDim[i].startRow);
  var sCol        = (tableDim[i].startCol);
  var nCol        = (tableDim[i].endCol - tableDim[i].startCol);

  secondSheet.showSheet();

  var currentRange = secondSheet.getDataRange().offset(sRow, sCol, nRow, nCol );

  /* Build the chart */
  var chart = secondSheet.newChart()
   .asBarChart()
   .setStacked()
   .setLegendTextStyle(style)
   .setLegendPosition(Charts.Position.RIGHT)
   .addRange(currentRange)
   .setXAxisTitle("Values")
   .setYAxisTitle("Names")
   .setPosition(sRow, nCol + sCol + 1, nRow + sRow, 2*(nCol + sCol))
   .setOption("title", question[i])
   .build();

  secondSheet.insertChart(chart);

}

我在这里做错了什么?

这是我当前的图表,其中标签文字没有出现:

Label text doesn't appear

1 个答案:

答案 0 :(得分:0)

我找到问题的根源,我在数据范围偏移中出现了一个一个错误。

var currentRange = secondSheet.getDataRange().offset(sRow - 1 , sCol, nRow, nCol );

我将“ - 1 ”添加到 sRow 值后,图表中会显示正确的数据标签。