カテゴリー内の他の記事

予定の登録(POST)

Index

予定の登録(1件)

1件の予定を登録できます。

  • 通常予定、期間予定を登録できます。繰り返し予定、仮予定は登録できません。

HTTP メソッド

POST

URI

クラウド版

https://(サブドメイン名).cybozu.com/g/api/v1/schedule/events

パッケージ版(Windows環境)

http://(サーバーのIPアドレスまたはホスト名)/scripts/(インストール識別子)/grn.exe/api/v1/schedule/events

パッケージ版(Linux環境)

http://(サーバーのIPアドレスまたはホスト名)/cgi-bin/(インストール識別子)/grn.cgi/api/v1/schedule/events

使用可能なガルーンのバージョン

  • クラウド版 Garoon
  • パッケージ版 Garoon バージョン 4.10.0以降

必要なアクセス権

予定の追加権限

リクエストの例

リクエストヘッダ

POST /g/api/v1/schedule/events HTTP/1.1
Host: {subdomain}.cybozu.com:443
X-Cybozu-Authorization: QWRtaW5pc3RyYXRvcjpjeWJvenU=
Authorization: Basic QWRtaW5pc3RyYXRvcjpjeWJvenU=
Content-Type: application/json
  • Content-Type に application/json を指定して下さい。 指定しない場合は JSON が解釈できないため、実行時エラーとなります。

リクエストボディ

※各フィールドの形式については スケジュールのeventオブジェクトをご確認ください。

パラメータ名 指定する値 必須 説明
eventType 文字列

必須

予定のタイプ

次のいずれかの値を指定します。

  • REGULAR
  • ALL_DAY
eventMenu 文字列 省略可

予定メニュー

予定メニューのデフォルト設定値「-----」の値は空文字列とみなされます。詳細

subject 文字列 省略可 タイトル
notes 文字列 省略可 

メモ

改行文字は「\n」です。

start オブジェクト 必須

開始日時とタイムゾーン

start.dateTime

文字列

必須

予定の開始日時

形式はRFC3339です。

start.timeZone

文字列

必須

開始日時のタイムゾーン

end オブジェクト 条件必須

終了日時とタイムゾーン

次にあてはまる場合、必須です。

  • isStartOnlyがfalse(または指定されていない)の場合
  • facilitiesが指定されている場合
  • eventTypeがALL_DAYの場合
end.dateTime 文字列 条件必須

予定の終了日時

形式はRFC3339です。

end.timeZone 文字列 条件必須 終了日時のタイムゾーン
isAllDay 真偽値 省略可  終日の予定かどうか
isStartOnly 真偽値

条件必須

開始のみの予定かどうか

※ 省略した場合のデフォルト値は false です。
※ end を省略する場合は、isStartOnly の値に true を指定してください。

attendees 配列 条件必須

参加者のリスト

※ attendees(参加者)または facilities(施設)のいずれかが必須です。

attendees[].type 文字列 条件必須

参加者のタイプ

次のいずれかの値を指定します。

  • ORGANIZATION
  • USER

※ attendees を指定する場合、必須です。

attendees[].id 文字列 条件必須 attendees[].type に指定する値により異なります。
  • 「ORGANIZATION」 の場合:組織 ID
  • 「USER」 の場合:Garoon ユーザー ID

※ attendees を指定する場合、id または code が必須です。

attendees[].code 文字列 条件必須 attendees[].type に指定する値により異なります。
  • 「ORGANIZATION」 の場合:組織コード
  • 「USER」 の場合:Garoon ユーザー名(ログイン名)

※ attendees を指定する場合、id または code が必須です。
※ id と code を指定すると、id の値が優先されます。

facilities 配列 条件必須

施設のリスト

※ attendees(参加者)または facilities(施設)のいずれかが必須です。

facilities[].id 文字列 条件必須

施設名ID

※ facilities を指定する場合、id または code が必須です。

facilities[].code 文字列 条件必須

施設の候補リストの施設コード

※ facilities を指定する場合、id または code が必須です。
※ id と code を指定すると、id の値が優先されます。

facilityUsingPurpose 文字列 条件必須

施設の利用目的

※「施設の利用申請」を有効にした場合、必須です。

companyInfo オブジェクト 省略可 会社情報
※ パッケージ版 Garoon バージョン 5.0.0以降で指定可能
companyInfo.name 文字列 省略可 会社名
※ パッケージ版 Garoon バージョン 5.0.0以降で指定可能
companyInfo.zipCode 文字列 省略可  郵便番号
※ パッケージ版 Garoon バージョン 5.0.0以降で指定可能
companyInfo.address 文字列 省略可  住所
※ パッケージ版 Garoon バージョン 5.0.0以降で指定可能
companyInfo.route 文字列 省略可  路線の経路
※ パッケージ版 Garoon バージョン 5.0.0以降で指定可能
companyInfo.routeTime 文字列 省略可  路線の所要時間
※ パッケージ版 Garoon バージョン 5.0.0以降で指定可能
companyInfo.routeFare 文字列 省略可 

路線の運賃
※ パッケージ版 Garoon バージョン 5.0.0以降で指定可能

companyInfo.phone 文字列 省略可  電話番号
※ パッケージ版 Garoon バージョン 5.0.0以降で指定可能
attachments 配列 省略可

添付ファイルのリスト

システム設定で「ファイルの添付」の許可が必要です。

attachments[].name 文字列 省略可  添付ファイルのファイル名
attachments[].content 文字列 省略可 

添付ファイルの内容

base64エンコードが必要です。

visibilityType 文字列 省略可 

公開設定のタイプ

次のいずれかの値を指定します。

  • PUBLIC
  • PRIVATE
  • SET_PRIVATE_WATCHERS

※ パッケージ版 Garoon バージョン 5.0.0以降で指定可能

useAttendanceCheck 真偽値 省略可

出欠確認を使用しているかどうか

システム設定で「出欠確認の使用」の許可が必要です。

※ パッケージ版 Garoon バージョン 5.0.0以降で指定可能

watchers 配列 条件必須

公開先のリスト

※ visibilityType が SET_PRIVATE_WATCHERSの場合、必須です。
※ パッケージ版 Garoon バージョン 5.0.0以降で指定可能

watchers[].type 文字列 条件必須

公開先のタイプ

次のいずれかの値を指定します。

  • ORGANIZATION
  • USER
  • ROLE

※ watches を指定する場合、必須です。
※ パッケージ版 Garoon バージョン 5.0.0以降で指定可能

watchers[].id 文字列 条件必須 

watchers[].type に指定した値により異なります。

  • 「ORGANIZATION」 の場合:組織ID
  • 「USER」 の場合:Garoon ユーザーID
  • 「ROLE」の場合:ロールID

※ watches を指定する場合、id または code が必須です。
※ パッケージ版 Garoon バージョン 5.0.0以降で指定可能

watchers[].code 文字列 条件必須 

watchers[].type に指定した値により異なります。

  • 「ORGANIZATION」 の場合:組織コード
  • 「USER」 の場合:Garoon ユーザー名(ログイン名)
  • 「ROLE」の場合:ロール名

※ watches を指定する場合、id または code が必須です。
※ id と code を指定すると、id の値が優先されます。
※ パッケージ版 Garoon バージョン 5.0.0以降で指定可能

additionalItems オブジェクト 省略可 予定のAPI用連携項目
additionalItems.item.value 文字列  省略可  予定のAPI用連携項目の値

レスポンスの例

処理が成功すると、予定の内容がJSON形式で返されます。 ※各フィールドの形式については スケジュールのeventオブジェクトをご確認ください。

JavaScript サンプル

Garoon REST API

XMLHttpRequest

制限事項

共通仕様の制限事項 をご確認ください。

記事に関するフィードバック

記事のコメント欄は記事に対するフィードバックをする場となっております。
右の記事フィードバックのためのガイドを参照してコメントしてください。
記事のリンク切れなど、気になる点がある場合も、こちらのフォームからフィードバックいただけますと幸いです。

Avatar
SHIMADA

クラウド版にて、非公開のスケジュールエントリーを、別システムからインポートする為に、
HTMLポートレット上に作成したJavaScriptから、REST APIでスケジュール
のPOSTを行おうとしています。
すでにGaroonにログインした状態からの実行になりますので、
RequestHeaderにX-Requested-With:XMLHttpRequestを設定し、セッション認証で実行しようとしているのですが
「HTTP Status:520 Error:FW00043 ページを表示できません。不正なリクエストが行われた可能性があります。」
となり、登録を行うことができません。
代わりにパスワード認証でPOSTすると正常に登録が行われます。

また、GETについてはセッション認証で正常に取得できることも確認しています。

下記の様なJavaScriptプログラムでPOSTの処理を行っていますが、どこか問題はありますでしょうか?


//"開始日","開始時刻","終了日","終了時刻","予定","予定詳細","メモ"
var eventInfo = {
   "eventType":"REGULAR",
   "eventMenu":ary[4],        //打合わせとか
   "subject":ary[5],            //件名
   "notes":ary[6],            //メモ
   "visibilityType":"PRIVATE",    //公開,非公開,メンバー指定
   "start":{
       "dateTime": "2018-10-16T00:00:00+09:00",
       "timeZone":"Asia/Tokyo"
   },
   "end":{
       "dateTime": "2018-10-16T23:59:59+09:00",
       "timeZone":"Asia/Tokyo"
   },
   "isAllDay": true,
   "isStartOnly": false,
   "attendees":[{
       "code":"xxxxx",
       "type":"USER"
   }]
};
//
var uri = location.protocol + "//" + location.hostname;
uri += "/g/api/v1/schedule/events"

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
    switch(xhr.readyState){
    case 0: //UNSENT
    case 1: //OPEND
    case 2: //HEADERS_RECIEVED
    case 3: //LOADING
       break;
    case 4: //DONE
       if( xhr.status ){
          console.log( xhr.responsesText );
          resolve(cno+1);
       }else{
          console.log( xhr.responsesText );
          reject(xhr.responsesText);
       }
    }
}
xhr.open("POST",uri);
//xhr.setRequestHeader("Host",location.hostname+":443");
//xhr.setRequestHeader("X-Cybozu-Authorization",window.btoa("xxxxx:xxxxx"));
xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");
xhr.setRequestHeader("Content-Type","application/json");
xhr.send( JSON.stringify(eventInfo) );

Avatar
cybozu Development team

SHIMADA様

REST APIのPOST、PATCH、DELETEでは、セッション認証の場合は、RequestTokenが必要ですが、それがなさそうです。

RequestTokenについては以下の記事をご確認ください。

https://developer.cybozu.io/hc/ja/articles/360001197206

記事の記述がわかりにくく、お手数をおかけしました。

今後は、目に止まりやすい場所に記述するように改善いたします。

Avatar
SHIMADA

cybozu Development team 様

早々のご回答ありがとうございました。

早速、再試行したところ、正常に動作することを確認できました。

SOAP APIを使った時には共通仕様の項目に記載があり、使った記憶があるのですが、REST APIには記載がなかったので忘れていました。

サインインしてコメントを残してください。