如何在Gmail Add-on中显示带图标的装饰文本?旧代码失效求助
解决Gmail Add-on中DecoratedText图标不显示的问题
问题分析
你当前代码中使用setIconUrl()加载外部图标失效,大概率是因为Gmail插件的CardService对外部资源的访问限制,或是API更新后对自定义图标URL的校验规则变严格导致的。
解决方案
方案1:使用CardService内置图标(推荐)
Google提供了一套内置的Material Design图标,通过setIcon()方法调用,无需依赖外部链接,稳定性更高。
修改后的代码示例:
var card = CardService.newCardBuilder(); var section = CardService.newCardSection(); var htmlContent = 'Add Card'; var decoratedText = CardService.newDecoratedText() .setText(htmlContent) .setOnClickAction(CardService.newAction().setFunctionName("showFirstCard")) .setIcon(CardService.Icon.ADD); // 使用内置图标 section.addWidget(decoratedText); card.addSection(section); return card.build();
你可以根据需求替换为其他内置图标,比如CardService.Icon.EDIT、CardService.Icon.DELETE等,完整的内置图标列表可参考Google Workspace开发者文档中的Icon枚举。
方案2:修复自定义图标URL的访问问题
如果必须使用自定义图标,需要确保:
- 图标URL是公开可直接访问的,没有防盗链、登录验证等限制
- 图标格式为PNG/JPG,尺寸建议为24x24px(符合插件UI规范)
- 可以尝试将图标上传至Google Drive,设置为“公开到互联网”,并获取文件的直接下载链接(注意不是共享链接,需要转换为可直接访问的格式)
调整后的自定义图标代码示例:
var decoratedText = CardService.newDecoratedText() .setText(htmlContent) .setOnClickAction(CardService.newAction().setFunctionName("showFirstCard")) .setIconUrl("替换为可直接访问的图标URL");
内容的提问来源于stack exchange,提问作者Avula Vijay Kumar
相关产品推荐
相关产品推荐

