Вопрос по – Доступ к BigQuery с помощью электронной таблицы Google

6

Я смотрю в Интернете, чтобы узнать, как импортировать данные больших запросов в электронную таблицу Google. Я нашел этот пример приложения, но он не работает, API не на том же уровне, и я не нахожу, как сделать запрос с API2 или API @ beta1 в приложении.

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);
    }
  }
}

Заранее спасибо за ваши идеи,

GQ

Эти инструкции сработали для меня: Greenido.wordpress.com / 2013/12/16 / ... arun

Ваш Ответ

2   ответа
9

UPDATE: Мы только что добавили новое руководство по сценариям BigQuery + Apps, которое поможет вам найти ответ на этот вопрос здесь: https: //developers.google.com/apps-script/articles/bigquery_tutoria

@ GQuery: мы недавно обновили AppsScript, чтобы иметь доступ к последней версии BigQuery API (v2). Вот простой пример, чтобы начать, отобразит результаты в журнале AppScript. Мы работаем над обновлением документации AppScrip, t / 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);
Уважаемый Майкл, я попробовал ваше решение. Могу ли я задать дополнительный вопрос. Чтобы получить доступ к этим общедоступным данным, я должен указать проект. как я в Google SpreadSseet, это ключ проекта Appscript? потому что я получаю исключение и следующие сообщения: Исключение: Неверный идентификатор проекта "..." Идентификаторы проекта должны содержать буквенно-цифровые символы и не более 63 символов в длину, GQuery
Хороший вопрос: projectId должен ссылаться на ваш идентификатор проекта Google Dev Console, который вам нужно установить здесь: Code.google.com / APIs / консоль. Хотя вы можете получить доступные идентификаторы проектов через API BigQuery, быстрый способ просмотра идентификатора проекта - посмотреть URL-адрес в проекте, который вы создаете: @ Code.google.com / APIs / консоль / пли = 1 # проект: 265312182736 Michael Manoochehri
Привет, Майкл, у тебя есть пример электронной таблицы, которой ты можешь поделиться? Я пытался, но у меня нет доступа к моему образцу или к образцу данных Google?! GQuery
Можете ли вы дать мне знать, в чем ошибка? Michael Manoochehri
Можете ли вы дать мне знать, что это за ошибка? Не забудьте включить BigQuery V2 в разделе «Ресурсы-> Сервисы API Google» Michael Manoochehri
0

чтобы комментировать hurricaneditka16. Поэтому я разместил этот ответ: эта строка

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

Должен быть заменен на

.query(
    resource,
    projectId);

Resource - это небольшое преобразование в sql, которое вы использовали ранее. Попробуйте это преобразование, и оно будет работать.

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

Похожие вопросы