LANG SELRCT

コードを書く場所

2019年4月11日木曜日

zendesk APIでステータスを変更したい


API で status を更新したくて方法を探しました


まずステータスの一覧がほしい

ありました
https://developer.zendesk.com/rest_api/docs/support/tickets#json-format

statusの種類は
"new", "open", "pending", "hold", "solved", "closed"

日本語にするとこんなかな
新規, オープン, 保留中, 待機中, 解決済み, 終了




コード.gs内の

    "ticket": {
      "status": "pending"
    }

で設定してやるとよさそう



コード.gs
var base_url = "https://NAME.zendesk.com/api/v2/";

function run(zendeskId) {//本番はzendeskIdを受け取って実行する想定
  var zendeskId = 6;//
  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": {
      "status": "pending"
    }
  }
  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);
}


参考

Tickets
https://developer.zendesk.com/rest_api/docs/support/tickets#json-format