Google Apps Script调用insertImage插入Sheet图表时权限报错求助
解决Google Apps Script插入ColumnChart图片时的权限错误
问题描述
尝试通过Google Apps Script将ColumnChart以图片形式插入Google Sheet时,遇到权限报错:
Exception: You do not have permission to call insertImage (line 597)
使用的代码和配置如下:
Code.gs
function testChart() { var data = Charts.newDataTable() .addColumn(Charts.ColumnType.STRING, "Year") .addColumn(Charts.ColumnType.NUMBER, "Sales") .addColumn(Charts.ColumnType.NUMBER, "Expenses") .addRow(["2020", 1000, 500]) .addRow(["2021", 2000, 1000]) .addRow(["2022", 4000, 2000]) .build(); var chart = Charts.newColumnChart() .setTitle('Sales & Expenses') .setXAxisTitle('Year') .setYAxisTitle('Amount (USD)') .setDimensions(600, 500) .setDataTable(data) .build(); SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().insertImage(chart.getAs('image/png'), 1, 1); }
appsscript.json
{ "timeZone": "America/Chicago", "dependencies": { }, "exceptionLogging": "STACKDRIVER", "runtimeVersion": "V8", "oauthScopes": [ "https://www.googleapis.com/auth/script.container.ui", "https://www.googleapis.com/auth/spreadsheets.currentonly" ] }
问题原因
当前配置的OAuth权限范围不足:https://www.googleapis.com/auth/spreadsheets.currentonly仅允许访问当前打开的电子表格,但插入Blob格式的图片到表格时,需要更完整的电子表格读写权限。
解决方法
- 修改
appsscript.json中的oauthScopes数组,将https://www.googleapis.com/auth/spreadsheets.currentonly替换为https://www.googleapis.com/auth/spreadsheets:
{ "timeZone": "America/Chicago", "dependencies": { }, "exceptionLogging": "STACKDRIVER", "runtimeVersion": "V8", "oauthScopes": [ "https://www.googleapis.com/auth/script.container.ui", "https://www.googleapis.com/auth/spreadsheets" ] }
- 保存配置后,重新运行脚本,此时会弹出权限授权请求,完成授权即可。
补充说明
如果是绑定到目标Google Sheet的容器脚本,也可以移除显式的oauthScopes配置,让Google Apps Script自动管理所需权限,避免手动配置遗漏。
内容的提问来源于stack exchange,提问作者Rey
相关产品推荐
相关产品推荐

