Скрипт Google для отправки запроса GET в API Trello и импорта данных в Google Sheet

У меня есть небольшой скрипт для извлечения информации из Trello API.

Сценарий отлично работает, когда я присваиваю полный URL-адрес строковой переменной. Однако, когда я передаю параметры отдельно, я получаю сообщение об ошибке «запрошено несанкционированное разрешение».

Рабочий код:

var url = "https://api.trello.com/1/boards/57c68c1beaab4c676adfaeb1/lists?key=myTrelloKey&token=myTrelloToken";

  var response = UrlFetchApp.fetch(url);
  Logger.log(response.getContentText());

Проблемный код:

var url = "https://api.trello.com/1/boards/57c68c1beaab4c676adfaeb1/lists";

  var options = 
 {
  "key": "myTrelloKey",
  "token": "myTrelloToken",
  "muteHttpExceptions" : true
  };
  
  var response = UrlFetchApp.fetch(url,options);
  Logger.log(response.getContentText());

Я пытался понять, является ли это проблемой аутентификации, но не смог обойти ее. Я что-то не так делаю во второй версии? Заранее спасибо!

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
644
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я считаю, что ваша текущая ситуация и цель следующим образом.

  • Из вашего вопроса я понял, что скрипт Working code: работает.
  • Вы хотите использовать "key": "myTrelloKey" и "token": "myTrelloToken" в качестве параметра запроса.

Точки модификации:

  • В UrlFetchApp.fetch(url, params)params не имеет свойств key и token.
    • Я думаю, что это причина вашей проблемы.
  • Даже когда эти значения используются в payload, в этом случае запрос становится методом POST.
  • Если вы хотите использовать "key": "myTrelloKey" и "token": "myTrelloToken" в качестве параметра запроса, на текущем этапе необходимо подготовить скрипт.
    • Хотя я проверял, можно ли напрямую использовать key и token для тела запроса и заголовков вместо параметра запроса, к сожалению, это не удалось. Похоже, что они используются в качестве параметров запроса. Реф

Когда вышеуказанные пункты отражаются на вашем сценарии, он становится следующим.

Модифицированный скрипт:

function myFunction() {
  // This is from https://gist.github.com/tanaikech/70503e0ea6998083fcb05c6d2a857107
  String.prototype.addQuery = function(obj) {
    return this + Object.keys(obj).reduce(function(p, e, i) {
      return p + (i == 0 ? "?" : "&") +
        (Array.isArray(obj[e]) ? obj[e].reduce(function(str, f, j) {
          return str + e + " = " + encodeURIComponent(f) + (j != obj[e].length - 1 ? "&" : "")
        },"") : e + " = " + encodeURIComponent(obj[e]));
    },"");
  }

  var url = "https://api.trello.com/1/boards/57c68c1beaab4c676adfaeb1/lists";
  var query = {
    "key": "myTrelloKey",
    "token": "myTrelloToken",
  };
  var endpoint = url.addQuery(query);
  Logger.log(endpoint); // <--- https://api.trello.com/1/boards/57c68c1beaab4c676adfaeb1/lists?key=myTrelloKey&token=myTrelloToken

  var response = UrlFetchApp.fetch(endpoint, {"muteHttpExceptions" : true});
  Logger.log(response.getContentText());
}

Использованная литература:

Другие вопросы по теме

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

Как динамически генерировать флажки в дополнительной карточке Календаря Google?
Скрипт Google Apps. JSON в электронную таблицу — результат слишком длинный (API в лист) Работает только со 100 регистрами
Статус, декабрь 2020 г. — «Идентификатор развертывания не связан с текущим проектом»
Как сгенерировать следующий доступный номер десятичной записи с точкой в ​​столбце
Скрипт Google Apps - конвертировать xlsx в лист, перезаписывая существующий
Сценарии Google: если флажок установлен, копировать строку с листа A на лист B. Если флажок не установлен, удалить скопированную строку с листа B
.clearcontent не работает только с одной электронной таблицей
Как передать массив на листы (получение ошибки при передаче массива на лист)
Как повысить производительность этой функции матричного поиска?
NewTrigger AppsScript не отображается в пользовательском интерфейсе