无法通过 Google 幻灯片 API 将表格图表插入演示文稿

Cannot insert Sheets chart to presentation via Google Slides API

我正在尝试使用 CreateSheetsChartRequest 向 Google 幻灯片演示文稿插入图表。

请求失败并出现错误:

Execution failed: GoogleJsonResponseException: Invalid value at '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 returns 字符串像 "u1935822328711" 用于图表id.

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

简答

使用getChartId()代替getId()

说明

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

但是,截至今天,EmbeddedChart class 上现在有一个名为 getChartId() 的方法 returns 一个唯一的、稳定的整数 标识图表。

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

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

您的 CreateSheetsChartRequest 现在应该可以使用了。

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