#javascript #rest #google-apps-script #google-sheets #trello
#javascript #отдых #google-apps-script #google-sheets #трелло
Вопрос:
Я пытаюсь обновить карту Trello с помощью Trello Rest API на основе конкретной ячейки, измененной с помощью скриптов Google apps. Когда я что-то обновляю в Google sheet, он создает еще одну копию с обновленной информацией о карточке в Trello. Карта, которая должна была обновиться, этого не делает.
Самое странное, что иногда это срабатывает. В первый раз я видел, как это работает, когда я перемещал эту карточку в другой список на той же доске. Кроме того, иногда он также создает копию.
Я разместил свой код для сценариев Google apps в нижней части этого текста. Любая помощь будет приветствоваться!
const ui = SpreadsheetApp.getUi();
const boardId = 'xxxxxxxxxxxxxxxxxx';
const key = 'xxxxxxxxxxxxxxxxxx';
const token = 'xxxxxxxxxxxxxxxxxx';
const atEdit = (e) => {
const {range: {getRow, getColumn}} = e;
const [row, column] = [getRow(), getColumn()];
const {getRange} = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
//Syntax for a single element is .getRange(row, column)
const [affectedCell, getRangeCells] = [getRange(row, column).getValues(), getRange(row, 1, 1, 23)];
const googleSheetsRowId = getRangeCells.getValues()[0][0];
getCard(googleSheetsRowId, affectedCell);
}
const getCard = (rowId, getAffectedCell) => {
const boardUrl = 'https://api.trello.com/1/boards/' boardId '/cards?key=' key 'amp;token=' token;
const response = UrlFetchApp.fetch(boardUrl);
const trelloCards = JSON.parse(response);
const {id: trelloCardId} = trelloCards[rowId];
ui.alert(Object.keys(trelloCards[rowId]));
updateCard(trelloCardId, getAffectedCell);
}
const buildURL = (params) => {
var esc = encodeURIComponent;
var query = Object.keys(params)
.map(key => esc(key) '=' esc(params[key]))
.join('amp;');
return query;
}
const updateCard = (cardId, affectedData) => {
// For now, this only works for the name but my next task is for it to work on all the values >_<
const data = {
'name': affectedData[0][0],
'desc': 'sup yo',
};
const options = {
'method' : 'PUT',
'payload' : JSON.stringify(data),
'muteHttpExceptions': true
};
const updateUrl = 'https://api.trello.com/1/cards/' cardId '?key=' key 'amp;token=' token 'amp;' buildURL(data);
const response = UrlFetchApp.fetch(updateUrl, options);
ErrHTTP(response);
}
const ErrHTTP = (response) => {
const responseCode = response.getResponseCode();
const responseBody = response.getContentText();
if (responseCode === 200) {
ui.alert('You got it!');
} else {
ui.alert(Utilities.formatString("Request failed. Expected 200, got %d: %s", responseCode, responseBody))
}
}
Комментарии:
1. Можете ли вы предоставить официальный документ о методе API, который вы хотите использовать?
2. Это может быть полезно в качестве ссылки на то, как работать с API Trello из Google Apps Script: github.com/andrewroberts/TrelloApp
3. developer.atlassian.com/cloud/trello/rest/api-group-cards/… @Tanaike
4. Спасибо за ответ. Судя по вашему ответу, я протестировал ваш скрипт. Но я не могу повторить вашу проблему. Когда я это тестировал, карта может быть правильно обновлена. Я прошу прощения за это. Могу ли я спросить вас о методе воспроизведения вашей проблемы?