LANG SELRCT

コードを書く場所

2019年4月11日木曜日

zendesk API でタグを追加したい(既存タグを消さずに)


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"]