Редактировать: Мы выпустим новую интеграцию Copper на следующей неделе, так что, если вы не хотите создавать проблемы с ее воссозданием с помощью Zapier, вы можете подождать этого релиза.
В любом случае, естьэто две вещи, которые вы, вероятно, должны рассмотреть в этой реализации.
TL; DR Solution
Вам необходимо экранировать вашу строку перед отправкой в мутации. Это должно работать:
const updateColumnValueBody = {
query: `mutation {
change_multiple_column_values(
board_id: ${boardId},
item_id: ${itemId},
column_values: "${newData.replace(/"/g, '\\"')}"
) { id }
}`
};
Слово об обработке ошибок GraphQL
Я не уверен, какова логика внутри функции executeMondayQuery
, но если во время синтаксического анализа произошла ошибкаПри выполнении мутации GraphQL сам HTTP-ответ по-прежнему имеет код состояния 200.
Тело ответа будет содержать массив errors
, описывающий все синтаксические ошибки в полезной нагрузке.
Экранирование строк в атрибутах GraphQL JSON
В этом конкретном случае проблема, вероятно, заключается в том, что ваш newData
(изначально stringData
) не экранирован и не заключен в двойные кавычки (указывая на то, что это строка).
В результате после интерполяции строки ваша полезная нагрузка выглядит следующим образом:
mutation {
change_multiple_column_values(
board_id: 12345678,
item_id: 87654321,
column_values: {"text": "123"}
) { id }
}
Но атрибут column_values
change_multiple_column_values
принимает отформатированную в JSON строку
Итак, что вы на самом деле хотите:
mutation {
change_multiple_column_values(
board_id: 12345678,
item_id: 87654321,
column_values: "{\"text\": \"123\"}"
) { id }
}