zendesk APIのPUTでタグを追加しようとしたら既存のタグが消えてしまったのでその解決策を探しました。
公式に書かれているページを見つけました。
Adding tags to tickets without overwriting existing tags
これと
https://{subdomain}.zendesk.com/api/v2/tickets/update_many.json?ids=1,2,3
これで
"ticket": {"additional_tags":["new_tag_1"]}}
実現できたのでコードを書き残しておきます。
コード.gs
var base_url = "https://NAME.zendesk.com/api/v2/"; function run(zendeskId) {//zendeskIdを受け取って実行する想定 var zendeskId = 5;// putTicketById(zendeskId); } function putTicketById(zendeskId) { var url = base_url + 'tickets/update_many.json?ids=' + zendeskId var options = getOptions(); UrlFetchApp.fetch(url, options); } function getPayload() { var payload = { "ticket": { "additional_tags": ["aaa"] } } var json = JSON.stringify(payload); return json; } function getOptions() { var options = { "method": "put", "contentType": "application/json", "headers": getHeaders(), "payload": getPayload() } return options; } function getHeaders() { var headers = { "Authorization": "Basic " + getZendeskToken() } return headers; } function getZendeskToken() { return Utilities.base64Encode(getProp('email') + "/token:" + getProp('api_token')) } function getProp(key) { return PropertiesService.getScriptProperties().getProperty(key); } |
補足
URLについて
これだと既存のタグが消える
var url = base_url + 'tickets/' + zendeskId + '.json';
これならうまくいく
var url = base_url + 'tickets/update_many.json?ids=' + zendeskId
tagsについて
これだと既存のタグが消える
"tags": ["important"]
これならうまくいく
"additional_tags": ["aaa"]
参考
Adding tags to tickets without overwriting existing tags
https://develop.zendesk.com/hc/en-us/articles/360001074488-Adding-tags-to-tickets-without-overwriting-existing-tags
Adding tags to tickets without overwriting existing tags
https://develop.zendesk.com/hc/en-us/articles/360001074488-Adding-tags-to-tickets-without-overwriting-existing-tags