通过应用程序脚本在bigquery中引用google工作表链接表并不起作用

时间:2017-08-02 07:10:53

标签: google-apps-script scope oauth-2.0 google-drive-api google-bigquery

我有一张简单的Google工作表,定期更新数据(比如每周,前一周的数据会被删除);我已将此工作表声明为bigquery中的表,并在app脚本中编写了一个脚本,该脚本获取数据并将其附加到具有相同结构的静态表(基本上存档);

手动这是有效的,但是这永远不会通过应用程序脚本(使用触发器)工作;我在互联网上阅读,它需要o-auth和范围,但我所有的谷歌表,bigquery凭据都属于我。任何人都可以帮我在我的应用程序脚本中编写scope / o-auth吗?

function saveQueryToTable() {
  var projectNumber = 'XXXX';
  var projectId = 'XXXX';
  var datasetId = 'YYYY';
  var tableId = 'archives';


  var job = {
    configuration: {

      query: {
        "allowLargeResults": true,
        query:'SELECT * FROM YYYY.temp_table_connected_to_a_google_sheet',
        destinationTable: {
          projectId: projectId,
          datasetId: datasetId,
          tableId: tableId
        },
        'writeDisposition':'WRITE_APPEND',
        'maximumBillingTier': '5'
      }
    }
  };


var queryResults = BigQuery.Jobs.insert(job, projectId);
Logger.log(queryResults.status);


}

尝试在脚本中声明范围: -

// scope = https://www.googleapis.com/auth/bigquery; //范围= https://www.googleapis.com/auth/drive&#39 ;;

//返回OAuth2.createService(' drive') 等

1 个答案:

答案 0 :(得分:1)

在运行代码之前,您需要拨打Google Drive API进行初始化。例如:

//just a random call to activate the Drive API scope 
var test = Drive.Properties.list('....a folderid of a Drive folder you have access to....') 

有关详细信息,请参阅此issue tracker