连接工作表不能以宏或脚本为目标
Posted
技术标签:
【中文标题】连接工作表不能以宏或脚本为目标【英文标题】:Connected Sheets cannot be targeted with macros or Scripts 【发布时间】:2020-07-15 18:29:16 【问题描述】:随着 Connected Sheets 更新的推出,G Suite 域(显然)正在从初始 BigQuery 数据连接器升级,该连接器使用 DataSourceTable 对象(参考下文)来显示提取的 BigQuery 数据。
通过 Connected Sheets 升级,从 BigQuery 源中提取的数据不再是 DataSourceTable,因此无法在录制的宏或脚本中定位。
当尝试将 BigQuery 提取的数据集作为 DataSourceTable 访问时,我收到错误消息:
代码:
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('A1').activate();
SpreadsheetApp.enableAllDataSourcesExecution();
spreadsheet.getCurrentCell().getDataSourceTables()[0].refreshData();
spreadsheet.getRange('D:F').activate();
spreadsheet.getActiveSheet().getDataSourceTables().forEach(function(dataSourceTable) dataSourceTable.waitForCompletion(300) );
错误:
TypeError: Cannot read property 'refreshData' of undefined
尝试以编程方式定义或操作 BigQuery 数据源时,我收到错误消息:
代码:
SpreadsheetApp.enableBigQueryExecution();
var spreadsheet = SpreadsheetApp.getActive();
var spec = SpreadsheetApp.newDataSourceSpec()
.asBigQuery()
.setProjectId('onerockwell-qa-sites')
.setRawQuery('select * from `dw.jira_issues` limit 10')
.build();
var dataSheet = spreadsheet.insertSheetWithDataSourceTable(spec);
var dataSourceTable = dataSheet.getDataSourceTables()[0];
dataSourceTable.waitForCompletion(60);
Logger.log("Data execution state: %s.", dataSourceTable.getStatus().getExecutionState());
错误:
Exception: Not permitted to act on data sources. Please contact your G Suite administrator to enable the feature.
还有其他人经历过这种中断吗?
参考:https://developers.google.com/apps-script/reference/spreadsheet/data-source-table
【问题讨论】:
【参考方案1】:TL;DR - Connected Sheets 无法与 Sheets Macro Recording、Apps Script 或 Sheets API 一起使用。
这正在改变:https://gsuiteupdates.googleblog.com/2020/08/connected-sheets-api-apps-script.html
从 2020 年 8 月 26 日开始,一直到 9 月。
关于我最初的问题的更多详细信息:我的域位于使用 DataSourceTables 的 BigQuery 的旧版本连接上——这确实支持宏定位和 Apps 脚本。我们自动升级到 Connected Sheets 并失去了这些能力。看来我们现在将通过上面链接的 Connected Sheets 的新升级来恢复这些功能。
【讨论】:
以上是关于连接工作表不能以宏或脚本为目标的主要内容,如果未能解决你的问题,请参考以下文章