Листы JavaScript API Неперехваченная ошибка

Я играю с новой версией API Google Sheets в своем приложении Aurelia (я использую TypeScript). Мне удалось войти в систему пользователя и запросить необходимые области, но когда я пытаюсь получить значения электронной таблицы, API выдает следующую ошибку:

cb=gapi.loaded_0:269 Uncaught Error: arrayForEach был вызван со значением, отличным от массива(…)

Вот как я инициализирую API и вхожу в систему:

gapi.load("auth2", () => {
    gapi.auth2.init({
       'client_id': this.clientId,
       'scope': this.scopes.join(' ')
    }).then(() => {
           this.auth = gapi.auth2.getAuthInstance();
           this.auth.signIn().then(response => {
               gapi.load("client", () => {
                     gapi.client.load("sheets", "v4", () => {
                         gapi.client.sheets.spreadsheets.values.get({
                             spreadsheetId: this.testSheet,
                             range: 'Class Data!A2:E'
                          }).then((response) => {console.log(response);});
                     });
               });
           })
    });
});

Переменная scopes представляет собой массив областей видимости:

scopes: string[] = ["https://www.googleapis.com/auth/spreadsheets.readonly", "https://www.googleapis.com/auth/spreadsheets", "https://www.googleapis.com/auth/drive.readonly", "https://www.googleapis.com/auth/drive"]

Пользователь успешно входит в систему, я даже могу получить его имя и адрес электронной почты. После загрузки API листов я проверил `gapi.client', и объект 'листы' там есть, но когда я пытаюсь получить данные из электронной таблицы, происходит сбой с указанной выше ошибкой. Пример, который я запускаю, относится к общедоступной электронной таблице Google, которая используется в этом примере. Также обратите внимание, что с моим идентификатором клиента все в порядке, поскольку я запускал с ним пример кода Google, и он работает нормально.


person dimlucas    schedule 20.11.2016    source источник


Ответы (2)


Ваш лист называется Данные класса? Если это так, может потребоваться указать диапазон следующим образом:

range: "'Class Data'!A2:E"

Это, безусловно, верно для пользовательского интерфейса Таблиц и сценариев приложений, и я пытаюсь вспомнить, испытывал ли я то же самое с клиентской библиотекой JS.

person Bardy    schedule 20.11.2016
comment
Пробовал.. Не получилось. Я скопировал значение для range непосредственно из примера Google, но оно все равно не работает... - person dimlucas; 20.11.2016
comment
Да, я попробовал образец сейчас, и образец действительно работает нормально, так что это не проблема... Два вопроса о ваших областях: вы запрашиваете как доступ только для чтения, так и полный доступ для Диска и Таблиц, конечно, вам нужно только запрашивать тот или иной (только для чтения или нет) в зависимости от того, хотите ли вы предоставить доступ для записи? Во-вторых, включен ли Drive API? - person Bardy; 21.11.2016
comment
Drive API не был включен, был включен только Sheets API. Я включил его сейчас, но ошибка сохраняется. Я пытался запустить код только с областью только для чтения. Я включил все доступные области, чтобы убедиться, что ошибка не имеет к ним никакого отношения. - person dimlucas; 21.11.2016

Я пытался использовать gapi и получил ту же ошибку, которая привела меня к этой проблеме.

Поскольку я использую Visual Studio 2019 с включенным Web Live Preview, он переопределяет несколько методов прототипа, и один из них — Array.prototype.forEach.

Я отключил предварительный просмотр в Интернете в меню Инструменты > Параметры > Предварительный просмотр в Интернете, и это сработало.

Инструменты›Параметры›Предварительный просмотр в Интернете

Я знаю, что этот случай специфичен для Visual Studio, но проблема с переопределением может дать некоторые рекомендации тем, у кого возникла эта проблема.

person JeanKininho    schedule 07.05.2021