1

Google Apps Script を使用して Redmine で問題を作成しようとしています。コードは次のとおりです。

function create_issue() {
  var payload = {
    'project_id': 'helpdesk',
    'subject': 'This is a test ticket',
    'description': 'This is just a genius test ticket',
    'category_id': 1
  };
  var headers = {
    'X-Redmine-API-Key': '<myapikey>',
    'Content-Type': 'application/json'
  };
  var url = 'http://myredmine.com/issues.json';
  var options = {
    'method': 'POST',
    'headers': headers,
    'payload': payload,
    //uteHttpExceptions': true
  };
  var response = UrlFetchApp.fetch(url, options);
  Logger.log(response);
}

そのスクリプトを実行するたびに、次の例外がスローされました。

実行に失敗しました: http://myredmine.com/issues.jsonの要求が失敗し、 コード 422 が返されました。切り捨てられたサーバー応答: {"errors":["Subject can't be blank"]} (完全な応答を調べるには、muteHttpExceptions オプションを使用します) (25 行目、ファイル「コード」) [合計実行時間 0.645 秒]

しかし、ご覧のとおり、"subject" パラメーターは既にペイロードに渡されています。私は何が欠けていますか?

ありがとう、

トリン

4

1 に答える 1

3

問題が見つかりました。ペイロードで問題を示す必要があります。

function create_issue() {
  var issue = {
    "description": "Test ticket", 
    "subject": "Genius ticket"
  }
  var payload = {
    "issue": issue, 
    "key": "<myapikey>", 
    "project_id": "helpdesk",
  };
  payload = JSON.stringify(payload);
  var headers = {
    'X-Redmine-API-Key': '<myapikey>',
    'Content-Type': 'application/json'
  };
  var url = 'http://myredmine.com/issues.json';
  var options = {
    'method': 'POST',
    'headers': headers,
    'payload': payload,
    'contentType': 'application/json',
    //'muteHttpExceptions': true
  };
  var response = UrlFetchApp.fetch(url, options);
  Logger.log(response);
}

そしてそれはうまくいきます!

于 2014-11-27T06:28:48.670 に答える