1

我正在尝试使用CreateSheetsChartRequest.

请求失败并出现错误:

执行失败:GoogleJsonResponseException:'requests[0].create_sheets_chart.chart_id' (TYPE_INT32)、“u1935822328711”处的值无效

示例代码:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var chartSheet = ss.getSheets()[0];

// get chart id via Sheets API
// returns string like 'u1935822328711'
var chartId = chartSheet.getCharts()[0].getId();

var slidesReqs = [];

slidesReqs.push({
  createSheetsChart: {
    objectId: 'someSlideChartId',
    elementProperties: {
      pageObjectId: slideId,
      size: {
        width: {
          magnitude: (7/9)*900,
          unit: 'PT'
        },
        height: {
          magnitude: (7/9)*560,
          unit: 'PT'
        }
      },
      transform: {
        scaleX: 1,
        scaleY: 1,
        translateX: 100000,
        translateY: 100000,
        unit: 'EMU'
      }
    },
    spreadsheetId: ss.getId(),
    chartId: chartId,
    linkingMode: 'NOT_LINKED_IMAGE'
  }
});

// throws error
// Execution failed: GoogleJsonResponseException: Invalid value at 'requests[0].create_sheets_chart.chart_id' (TYPE_INT32), "u1935822328711"
Slides.Presentations.batchUpdate({'requests': slidesReqs}, presentationFileId);

我看到CreateSheetsChartRequest期望字段chartId为整数,但 Google Sheets API 为图表 ID 返回类似“u1935822328711”的字符串。

如何将 Google 表格图表插入幻灯片?

4

1 回答 1

4

简短的回答

使用getChartId()而不是getId().

解释

EmbeddedChart.getId()返回一个仅在 的上下文中有用的 ID,这是UiApp一个用于构建基于组件的 UI 的已弃用服务。

然而,到今天为止,类中现在有一个方法EmbeddedChart被调用getChartId(),它返回一个唯一的、稳定的整数来标识图表。

如果您将代码中的一行更改为

var chartId = chartSheet.getCharts()[0].getChartId();

CreateSheetsChartRequest现在应该工作了。

来源:https ://issuetracker.google.com/issues/79784012#comment2

于 2018-05-17T08:37:54.327 回答