【问题标题】:Cannot insert Sheets chart to presentation via Google Slides API无法通过 Google Slides API 将表格图表插入演示文稿
【发布时间】:2018-05-17 08:37:54
【问题描述】:

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

请求失败并出现错误:

执行失败: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 表格图表插入幻灯片?

【问题讨论】:

    标签: google-apps-script google-sheets-api google-slides-api


    【解决方案1】:

    简答

    使用getChartId() 而不是getId()

    说明

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

    然而,截至今天,EmbeddedChart 类现在有一个名为 getChartId() 的方法,它返回一个唯一的、稳定的整数来标识图表。

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

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

    您的CreateSheetsChartRequest 现在应该可以工作了。

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

    【讨论】:

    • 感谢您提供此信息。这对我很有帮助。简单文档是this。我无法理解它的用法。但从你的问答中,我可以知道这件事的细节。谢谢。
    • @Tanaike 在插入幻灯片之前,我们需要从工作表的EmbeddedChart 获取图表 ID,这就是隐藏方法所在的位置。您提供的链接方法可以在插入幻灯片后使用。
    • 感谢您提供更多信息。我想在我的应用程序中利用这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多