使用Google Slides API批量更新主题颜色时遇重复类型错误
问题
创建新演示文稿并设置主题颜色时,运行代码抛出错误:
GoogleJsonResponseException: API call to slides.presentations.batchUpdate failed with error: Invalid requests[0].updatePageProperties: Color scheme cannot have duplicate theme color types
使用的代码:
var presentation = Slides.Presentations.create({ title: 'colorSchemeTest' }); var master = presentation.masters[0]; var requests = [{ updatePageProperties: { objectId: master.objectId, pageProperties: { colorScheme: COLOR_SCHEME }, fields: "colorScheme.colors" } }]; Slides.Presentations.batchUpdate( { requests: requests }, presentation.presentationId );
COLOR_SCHEME定义:
var COLOR_SCHEME = { colors: [ {//Black type: "DARK1", color: { red: 0, green: 0, blue: 0 } }, {//Dark Gray type: "DARK2", color: { red: .263, green: .263, blue: .263 } }, {//White type: "LIGHT1", color: { red: 1, green: 1, blue: 1 } }, {//Whisper Gray type: "LIGHT2", color: { red: .953, green: .953, blue: .953 } }, {// Blue type: "ACCENT1", color: { red: .259, green: .522, blue: .957 } }, {// Green type: "ACCENT2", color: { red: .204, green: .659, blue: .325 } }, {// Yellow type: "ACCENT3", color: { red: .984, green: .737, blue: .020 } }, {// Red type: "ACCENT4", color: { red: .918, green: .263, blue: .208 } }, {//Purple type: "ACCENT5", color: { red: .612, green: .153, blue: .690 } }, {//Gray type: "ACCENT6", color: { red: .800, green: .800, blue: .800 } }, {//Primary Gray type: "TEXT1", color: { red: .400, green: .400, blue: .400 } }, {//Another Gray type: "TEXT2", color: { red: .600, green: .600, blue: .600 } } ] }
解决方案
错误原因是:新创建的演示文稿母版默认自带一套完整的主题颜色,当你在fields中指定"colorScheme.colors"时,Slides API会尝试将你提供的颜色追加到现有配色方案中,导致颜色类型(如DARK1、LIGHT1等)重复。
只需将updatePageProperties中的fields值从"colorScheme.colors"改为"colorScheme",即可完全替换母版的原有配色方案,避免重复:
修改后的请求代码:
var requests = [{ updatePageProperties: { objectId: master.objectId, pageProperties: { colorScheme: COLOR_SCHEME }, fields: "colorScheme" // 替换为colorScheme,覆盖整个配色方案 } }];
执行上述修改后的代码,就能用自定义的COLOR_SCHEME完全替换母版默认配色,不会再出现重复类型的错误。
内容的提问来源于stack exchange,提问作者Jeffrey Lease
相关产品推荐
相关产品推荐

