Была попытка настроить веб-перехватчик в Google Sheets Apps Script, который будет реагировать на изменения, внесенные в Trello. Для этого предлагается развернуть сценарий как веб-приложение (требующее функций doGet
и doPost
, возвращающих HTML), чтобы создать целевой URL-адрес для получения запросов post
и get
.
Веб-приложение создает два URL-адреса, один заканчивается на /dev
и предназначен для целей разработки (не отвечает на post
запросы), а другой заканчивается на /exec
для обычного доступа.
Я развернул веб-приложение, оба URL-адреса доступны и реагируют в моем браузере (можно просматривать exec в инкогнито без входа в систему), приложение опубликовано для выполнения как «я» и будет доступно «любому, даже анонимному».
Мне удалось успешно использовать приведенный ниже код для создания веб-перехватчиков для URL /dev
, но не для URL /exec
.
function create() {
var url = 'https://api.trello.com/1/tokens/ae6ebe60b45abcd2d4aa945c9ab4c4571bd6b6f7856b1df0cd387fbffc649579/webhooks/?key=a211f4aca7fb3e521d652730dd231cb6'
var payload = {
"key": "xxxxxxxxxxx",
"token" : "xxxxxxxxxxxxx",
"callbackURL": "https://script.google.com/macros/s/AKfycbw51TYGWHe95hKdcAs4l7E2eg0AtBi8e48lf_iafKYI/dev",
"idModel":"xxxxxxxx",
"description": "GW Test"
}
var options = {"method" : "post",
"payload" : payload,
"muteHttpExceptions": true
};
var response = UrlFetchApp.fetch(url,options);
}
При использовании URL /dev
я вижу, что в мой Trello добавлен новый веб-крючок, но URL /exec
возвращает следующую ошибку:
{"message": "URL (https://script.google.com/macros/s/AKfycbxo90ucgXXz7MG6Z3wb2KD-PJn3akGKoelXLJ2mkg/exec) не вернул код состояния 200, получил 403 "," error ":" ERROR "}
Таким образом, Trello ожидал, что будет возвращен «код состояния 200», чтобы убедиться, что скрипт работает правильно, но вместо этого получил 403. Меня смущает то, почему этого не происходит при использовании /dev
? Как я могу заставить его принять мой /exec
URL?
Больше информации:
Я могу заставить свой код отвечать на запросы put
и get
, когда я использую ссылку или загружаю URL-адрес прямо в моем браузере. Он отвечает, заполняя первые шесть (6) ячеек в электронной таблице.
Я переиздал новую версию и подтвердил, что код все еще работает, но я все еще получаю сообщение об ошибке от Trello, в котором говорится, что они получили код 403, а не 200. И я получаю эту ошибку только при использовании /exec
, а не /dev
. А поскольку /dev
не может получать post
запросов, это бесполезно :(
Ниже приведен оставшийся пример:
function doSomething() {
var values = [11,12];
SpreadsheetApp.getActiveSheet().getRange("A1:B1").setValue(values);
}
function create() {
var url = 'https://api.trello.com/1/tokens/ae6ebe60b45abcd2d4aa945c9ab4c4571bd6b6f7856b1df0cd387fbffc649579/webhooks/?key=a211f4aca7fb3e521d652730dd231cb6'
var payload = {
"key": "xxxxxxxxxxxxxxxxxx",
"token" : "xxxxxxxxxxxxxxxxxxx": "https://script.google.com/macros/s/AKfycbw51TYGWHe95hKdcAs4l7E2eg0AtBi8e48lf_iafKYI/dev",
"idModel":"xxxxxxxxxxxxxxxxxxxxxxxx",
"description": "GW Test"
}
var options = {"method" : "delete",
"payload" : payload,
// "muteHttpExceptions": true
};
var response = UrlFetchApp.fetch(url,options); // creates webhook
}
// function that fires when the webapp receives a GET request
function doGet(e) {
doSomething();
var values = [21,22];
SpreadsheetApp.getActiveSheet().getRange("A2:B2").setValue(values);
return HtmlService.createHtmlOutput("something Get-ed");
}
function doPost(e) {
doSomething();
var values = [31,32];
SpreadsheetApp.getActiveSheet().getRange("A3:B3").setValue(values);
return ContentService.createTextOutput("something Posted");
//var params = JSON.stringify(e);
}
/dev
. Но конечная точка/exec
не работает. В такой ситуации я подумал, что последний скрипт может не отображаться в веб-приложениях. Так как насчет повторного развертывания веб-приложений в виде новой версии? По этому, пожалуйста, проверьте это еще раз. Если это не было прямым решением вашей проблемы, прошу прощения. Если это не сработало, можете ли вы предоставить сценарий веб-приложений? - person Tanaike   schedule 09.08.2019put
иget
запросы, когда я использую ссылку или загружаю URL-адрес прямо в моем браузере. Он отвечает, заполняя первые шесть (6) ячеек в электронной таблице. Я переиздал новую версию и убедился, что код все еще работает, но я все еще получаю сообщение об ошибке от Trello, в котором говорится, что они получили код 403, а не 200. И я получаю эту ошибку только при использовании/exec
, а не/dev
. А поскольку/dev
не может получатьpost
запросов, это не поможет :( - person Chuck's Keg   schedule 09.08.2019