【问题标题】:Change chart properties in Google Slides API在 Google Slides API 中更改图表属性
【发布时间】:2018-05-24 04:26:26
【问题描述】:
我正在基于模板创建一个新的 Google 幻灯片文件,一旦创建,我需要在源工作表发生变化时停止嵌入式图表的更新(这是针对基础将定期变化的月度报告)。
我正在使用适用于 Google Apps 脚本库的 Google Slides API(感谢 Wesley Chun 和 Martin Hawksey)并且可以搜索和替换文本。
但是,我在库中没有看到任何允许更改图表属性的内容。我可以创建新图表或强制刷新。
任何帮助表示赞赏。
【问题讨论】:
-
你检查过这个documentation关于自定义谷歌图表的信息吗?您可以使用 Google Chart Tools 的默认设置 - 所有自定义都是可选的,基本设置已准备好启动。但是,如果您的网页采用与提供的默认值不一致的样式,则可以轻松自定义图表。您还可以查看此related SO thread 以使用 Apps 脚本自定义 Google 图表。
标签:
google-apps-script
google-slides-api
【解决方案1】:
API 不支持取消链接现有图表以防止用户刷新它。您最好的选择可能是删除图表并在您的最终演示文稿中重新创建它。您应该能够从 presentation.get() 或 presentation.pages.get() 获取图表 ID、电子表格 ID 和页面元素转换,并使用它重新插入图表以保留位置和内容。
【解决方案2】:
我已经完成了以下操作,它删除并重新创建了幻灯片文件中的所有图表;
for (var j in SLIDES.presentationsGet(DECK_ID).slides) {
var slide = SLIDES.presentationsGet(DECK_ID).slides[j];
for (var i in slide['pageElements']){
var obj = slide['pageElements'][i];
if (obj['sheetsChart']) {
// delete it and recreate as static image
var reqs = [
{'deleteObject': {'objectId': obj['objectId']}},
{'createSheetsChart': {
'spreadsheetId' : obj["sheetsChart"]["spreadsheetId"],
'chartId' : obj["sheetsChart"]["chartId"],
'elementProperties' : {
'pageObjectId': slide['objectId'],
'size' : obj["size"],
'transform' : obj["transform"],
}
}
}
];
SLIDES.presentationsBatchUpdate(DECK_ID, {'requests': reqs})
}
}