Не удается получить результаты из BigQuery с помощью скрипта приложений - PullRequest
0 голосов
/ 26 мая 2020

Иметь тот же сценарий (другой проект), запрашивающий разные таблицы / представления, который отлично работает. Я считаю, что проблема связана с oAuth. Я добавил все мыслимые области в свою учетную запись службы (и файл манифеста проекта) и все еще получаю ошибку, когда ниже запрос вызывает BigQuery. Вот полный сценарий:

function fetchQuery(){

  var request = {
        query: 'SELECT * FROM gtg-tools.Inventory.KegsForTaps', //view with filtered data
    useLegacySql: false,
    timeoutMs: 1000
};
  var queryResults = BigQuery.Jobs.query(request, 'gtg-tools');
  var jobId = queryResults.jobReference.jobId;
  var columns = queryResults.Columns;
  var cols = columns.length //ERROR REFERENCES HERE
  var rows = queryResults.rows;
  var headers = queryResults.schema.fields.map(function(field) {
      return field.name;
    });
//  activeSheet.appendRow(headers);
Logger.log(queryResults)

  var data = new Array(rows.length);
    for (var i = 0; i < rows.length; i++) {
      var cols = rows[i].f;
      data[i] = new Array(cols.length);
      for (var j = 0; j < cols.length; j++) {
        data[i][j] = cols[j].v;
      }    }
  var destSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("KegsForTaps");
   destSheet.getRange(2, 1, rows.length, cols.length).setValues(data);
   Logger.log(data)

}

Обычно возвращается ошибка «Невозможно прочитать свойство, длина которого не определена». Я считаю, что это происходит из-за того, что запрос не возвращает никаких данных, поэтому длины нет. Сам запрос, очевидно, прост, поэтому должна быть ошибка подключения, что, вероятно, указывает на проблему с авторизацией. Если я закомментирую все, что находится ниже queryResult, и занесу в журнал, ответ будет:

"[20-05-26 09: 36: 23: 912 EDT] {jobReference = {jobId = job_0-I5lYIQSNV62HEKV-DqzxlA0zKT, location = US, projectId = gtg-tools}, kind = bigquery # queryResponse, jobComplete = false} "

Таким образом, запрос кажется неудачным ...

На более фундаментальном уровне хотелось бы лучше понять взаимосвязь между экранами согласия oAuth, учетными записями служб и проектами. Когда я настраиваю экран согласия oAuth, как мне узнать, что он будет применен к конкретному проекту c?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...