LANG SELRCT

Apps Script Reference  (Create: Create new Spreadsheet | Create new Apps Script

Thursday, April 11, 2019

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



Latest post

スプレッドシートA列にある複数のテキストをスライドに追加したい(Google Apps Script)

今回Google Apps Scriptでやりたいこと GoogleスプレッドシートA列にある複数の値を取得して Googleスライドに渡して 図形オブジェクトのテキストとして追加したい ① スプレッドシートのA列に値を入れておく ② Code.gsのinsertNewShape...