You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Apps Script复制BigQuery数据连接器工作表数据?

解决BigQuery数据连接器工作表复制报错的问题

报错原因

BigQuery数据连接器生成的是特殊的数据源工作表(DATASOURCE sheet),这类表是与BigQuery实时联动的只读型数据容器,copyTo()方法属于直接操作工作表范围的动作,不被这类特殊工作表支持,因此会抛出"The action is not supported for DATASOURCE sheet."错误。

修正方案

不要直接复制范围,而是先提取数据源工作表中的数据值,再将这些值写入目标工作表。以下是修正后的代码:

function copyData() {
  var sourceSheetNames = ["Connector Sheet 1", "Connector Sheet 2"];
  var targetSheetName = "Sheet1";
  var targetCellStartRow = [3, 16];
  var targetCellStartColumn = 1;
  
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var targetSheet = spreadsheet.getSheetByName(targetSheetName);
  
  for (var i = 0; i < sourceSheetNames.length; i++) {
    var sourceSheet = spreadsheet.getSheetByName(sourceSheetNames[i]);
    var sourceData = sourceSheet.getDataRange().getValues(); // 提取数据值
    
    // 计算目标范围的大小,匹配源数据的行数和列数
    var targetRange = targetSheet.getRange(
      targetCellStartRow[i], 
      targetCellStartColumn, 
      sourceData.length, 
      sourceData[0]?.length || 0
    );
    
    targetRange.setValues(sourceData); // 将数据写入目标范围
  }
}

代码说明

  • getValues():从数据源工作表中提取所有单元格的原始值,返回一个二维数组,这是数据源工作表支持的操作。
  • setValues():将提取到的二维数组写入目标工作表的指定范围,确保数据完整复制。
  • 增加了sourceData[0]?.length || 0的判断,避免源数据为空时出现索引错误。

内容的提问来源于stack exchange,提问作者jc315

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 12:53:07