2017-05-09 123 views
0

因此,我對所有這一切都很陌生,包括BigQuery和AppScript(一般編碼..),我正在學習,所以也許我的問題可能看起來很愚蠢。請聽我說。將新的Google表格數據添加到BigQuery表

我已經創建了一個腳本,可以從我的BigQuery表中的一個BigQuery表中將10個最新數據點加載到Google表格文檔中。現在,當我手動將新數據點添加到此表的底部時,我希望有一個加載腳本運行,將該新數據上傳回BigQuery,並將其附加到我的原始表中。我在某處讀到,只要插入一張新表,數據就會自動追加,如果提到的表已經存在。但是,我還沒有測試過的部分呢,因爲我停頓在了前面行的錯誤.. 下面是負載腳本我已經從鬆散https://developers.google.com/apps-script/advanced/bigquery

function loadCsv() { 
    var projectId = 'XX'; 
    var datasetId = 'YY'; 
    var tableId = 'daily_stats_testing'; 


    var file = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = file.getActiveSheet().getRange("A12:AK10000").getValues(); 
    var data = sheet.getBlob().setContentType('application/octet-stream'); 

    var job = { 
    configuration: { 
    load: { 
    destinationTable: { 
     projectId: projectId, 
     datasetId: datasetId, 
     tableId: tableId 
    }, 
    skipLeadingRows: 1 
    } 
    } 
    }; 

    job = BigQuery.Jobs.insert(job, projectId, data); 
    var Msg = "Load started. Check status of it here:" + 
    "https://bigquery.cloud.google.com/jobs/%s", projectId 
    Logger.log(Msg); 
    Browser.msgBox(Msg); 
    return; 
} 

現在的錯誤,我得到複製(在各種各樣的形式,因爲我一直在測試東西)是BigQuery.Jobs函數只接受Blob數據,並且來自我當前工作表中的數據(使用A12標記第一個手動推算數據的行爲)不是Blob可識別的數據集。

是否有任何方法(任何函數?)我可以使用它將直接轉換選定的數據範圍,並使其與Blob兼容? 有沒有人有任何建議如何更有效地做到這一點?

不幸的是,腳本必須直接從當前打開的Spreadsheet表單中加載,因爲它是我將運行的更大腳本的一部分。希望這不是太大的阻礙!在您的幫助:)

回答

0

感謝有什麼辦法(任何功能?)我可以使用,這將直接轉換選定的數據範圍,使其兼容BLOB?

實際上有一個函數可以將對象轉換爲blob類型,即newBlob(data)

爲了測試這個,我從我的電子表格中獲得了一個範圍並使用它。

function blobTest(){ 

    var sheet = SpreadsheetApp.getActiveSheet(); 
    var range = sheet.getRange("A1:C1"); 
    Logger.log(range); //here, range data is of type Range object 

    var blob = Utilities.newBlob(range); 
    Logger.log(blob); //here, range data is now of type Blob object 
} 
+1

謝謝,這似乎工作! – nikooters

相關問題