无法通过 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
现在应该可以使用了。
我正在尝试使用 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
现在应该可以使用了。