LANG SELRCT

Google Apps Scriptのコードを書く場所  (新規作成: スプレッドシート | スクリプトエディタ

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



最新の投稿

JIRA APIで選択リスト(複数選択)を課題作成時に選択してPOSTしたい

JIRA APIを利用して選択リスト(複数選択)フィールドに値を入れたくて書いたコードです。 コード.gsのこの部分で複数選択の値を選択できました。 customfield_10043 は手元のJIRAでの選択リスト(複数選択)のフィールドIDなので、各自の環境によって異なります...