Иметь тот же сценарий (другой проект), запрашивающий разные таблицы / представления, который отлично работает. Я считаю, что проблема связана с 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?