2012-05-27 8 views
6

Tôi tìm trên internet để xem cách nhập dữ liệu truy vấn lớn bên trong bảng tính google. Tôi đã tìm thấy mẫu ứng dụng này, nhưng API không hoạt động không cùng cấp và tôi không tìm cách truy vấn với API2 hoặc API @ beta1 trong bản ghi ứng dụng.Truy cập BigQuery bằng Bảng tính Google

function runQuery() { 
    var ss = SpreadsheetApp.getActive(); 
    var range = ss.getRangeByName('query'); 
    var query = range.getCell(1, 1).getValue(); 
    //var results = bigquery.query(query); 



    var header = ss.getRangeByName('header'); 
    header.clearContent(); 
    var output = ss.getRangeByName('output'); 
    output.clearContent(); 
    for (var i = 0; i < results.fields.length; i++) { 
    var field = results.fields[i]; 
    header.getCell(1, 1 + i).setValue(field.id); 
    } 
    for (var i = 0; i < results.rows.length; i++) { 
    var row = results.rows[i].f; 
    for (var j = 0; j < row.length; ++j) { 
     output.getCell(1 + i, 1 + j).setValue(row[j].v); 
    } 
    } 
} 

Cảm ơn trước cho ý tưởng của bạn,

GQ

+0

Những hướng dẫn làm việc cho tôi: https://greenido.wordpress.com/2013/12/16/big-query-and-google-spreadsheet-intergration/ – arun

Trả lời

9

UPDATE: Chúng tôi chỉ cần thêm một BigQuery mới + Apps Script Tutorial rằng nên hướng dẫn bạn qua các câu trả lời cho câu hỏi này ở đây:https://developers.google.com/apps-script/articles/bigquery_tutorial

@GQuery: Gần đây, chúng tôi đã cập nhật AppsScript để có quyền truy cập vào phiên bản API BigQuery mới nhất (v2). Đây là một ví dụ đơn giản để bắt đầu, sẽ hiển thị kết quả trong nhật ký AppScript. Chúng tôi đang làm việc để cập nhật tài liệu AppScript/BigQuery.

function runQuery() { 
    var projectId = 'YOUR PROJECT'; 
    var sql = 'select word, word_count from publicdata:samples.shakespeare limit 100'; 
    var queryResults; 

    // Run the query 
    try { 
    queryResults = BigQuery.Jobs.query(projectId, sql); 
    } 
    catch (err) { 
    Logger.log(err); 
    return; 
    } 

    // Loop until successful job completion 
    while (queryResults.getJobComplete() == false) { 
    try { 
     queryResults = BigQuery.Jobs.getQueryResults(projectId, queryResults.getJobReference().getJobId()); 
    } 
    catch (err) { 
     Logger.log(err); 
     return; 
    } 
    } 

    var tableRows = queryResults.getRows(); 
    for (var i = 0; i < tableRows.length; i++) { 
    var rowString = ''; 
    var cols = tableRows[i].getF(); 
    for (var j = 0; j < cols.length; j++) { 
     rowString += cols[j].getV() + '\t'; 
    } 
    Logger.log(rowString); 
+0

thân mến Michael, tôi đã cố gắng giải pháp của bạn. Tôi có thể hỏi thêm một câu được không. Để truy cập vào các dữ liệu công khai đó, tôi phải chỉ định một dự án. như tôi đang ở trong google spreadhseet, đó có phải là khóa dự án ứng dụng không? vì tôi nhận được ngoại lệ và các thông báo sau: Ngoại lệ: ID dự án không hợp lệ "..." ID dự án phải chứa ký tự chữ và số và dài tối đa 63 ký tự, – GQuery

+0

Câu hỏi hay: projectId nên tham chiếu ID dự án Google Dev Console của bạn mà bạn cần thiết lập tại đây: https://code.google.com/apis/console. Mặc dù bạn có thể lấy (các) dự án có sẵn của bạn thông qua API BigQuery, một cách nhanh chóng để xem projectId của bạn là xem URL trong dự án bạn tạo: https://code.google.com/apis/console/? pli = 1 # project: 265312182736 –

+0

Xin chào Michael, bạn có bảng tính mẫu để chia sẻ không. Tôi đã thử nhưng tôi không thể truy cập vào mẫu dữ liệu mẫu hoặc google của mình?! – GQuery

0

Tôi không có tiếng để nhận xét về hurricaneditka16. Vì vậy, tôi gửi câu trả lời này: Dòng này

queryResults = BigQuery.Jobs.query(projectId, sql); 

nên được thay thế bằng

.query(
    resource, 
    projectId); 

Resource là một sự chuyển đổi nhẹ trên sql bạn sử dụng trước đó. Hãy thử chuyển đổi này và nó sẽ hoạt động.

function getResource(sql) { 
    var resource = '{"query": "sql"}' 
    resource = resource.replace('sql', sql); 
    return resource 
}