Google apps script 无法通过Google Slides API将图纸图表插入演示文稿

Google apps script 无法通过Google Slides API将图纸图表插入演示文稿,google-apps-script,google-sheets-api,google-slides-api,Google Apps Script,Google Sheets Api,Google Slides Api,我正在尝试使用将图表插入谷歌幻灯片演示文稿 请求失败,出现错误: 执行失败:GoogleJsonResponseException:请求[0]处的值无效。创建工作表\u图表。图表\u id'(类型\u INT32),“u1935822328711” 示例代码: var ss = SpreadsheetApp.getActiveSpreadsheet(); var chartSheet = ss.getSheets()[0]; // get chart id via Sheets API //

我正在尝试使用将图表插入谷歌幻灯片演示文稿

请求失败,出现错误:

执行失败:GoogleJsonResponseException:请求[0]处的值无效。创建工作表\u图表。图表\u id'(类型\u 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);
我看到它期望字段
chartId
为整数,但GoogleSheetsAPI为图表id返回类似“u1935822328711”的字符串

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

简短回答 使用而不是
getId()

解释 返回一个ID,该ID仅在
UiApp
上下文中有用,UiApp是一种用于构建基于组件的UI的弃用服务

但是,到今天为止,
EmbeddedChart
类中有一个名为的方法,它返回一个唯一的、稳定的整数来标识图表

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

var chartId = chartSheet.getCharts()[0].getChartId();
您的
CreateSheetsChartRequest
现在应该可以工作了

来源:

简短回答 使用而不是
getId()

解释 返回一个ID,该ID仅在
UiApp
上下文中有用,UiApp是一种用于构建基于组件的UI的弃用服务

但是,到今天为止,
EmbeddedChart
类中有一个名为的方法,它返回一个唯一的、稳定的整数来标识图表

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

var chartId = chartSheet.getCharts()[0].getChartId();
您的
CreateSheetsChartRequest
现在应该可以工作了


来源:

谢谢您提供的信息。这对我很有帮助。简单的文档是。我不明白这个用法。但从你的问答中,我可以知道这方面的细节。谢谢。@Tanaike在插入幻灯片之前,我们需要从工作表的
EmbeddedChart
中获取图表id,这就是隐藏方法所在的位置。插入到幻灯片后,可以使用您提供链接的方法。感谢您提供更多信息。我想在我的申请中利用这一点。谢谢你提供这些信息。这对我很有帮助。简单的文档是。我不明白这个用法。但从你的问答中,我可以知道这方面的细节。谢谢。@Tanaike在插入幻灯片之前,我们需要从工作表的
EmbeddedChart
中获取图表id,这就是隐藏方法所在的位置。插入到幻灯片后,可以使用您提供链接的方法。感谢您提供更多信息。我想在我的申请中利用这一点。