Apps Script公式リファレンス: Apps Script Reference |障害・課題追跡: IssueTracker |Google Workspace: Status Dashboard - Summary

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



Latest post

Google Apps Scriptの障害時はIssueTrackerを見てみる - Incidents for Apps Script are reported on Issue Tracker

IssueTracker > Apps Script issues https://issuetracker.google.com/savedsearches/566234 Google Apps Scriptの障害時は IssueTracker に課題が上がっていることが...