Outlook 予定表のイベントの参加者追加

Outlook Calendar Event Attendees Add

Outlook 予定表のイベント参加者を追加します。

Auto Step icon
Configs for this Auto Step
conf_OAuth2
A: OAuth2 設定 *
conf_eventId
B: イベントID *#{EL}
conf_attendees
C: 追加したいイベント参加者のメールアドレスリスト(カンマ区切り) *
conf_attendeesOptional
D: 追加したいイベント任意参加者のメールアドレスリスト(カンマ区切り)
conf_eventUrl
E: イベントURLを保存するデータ項目 (更新)
conf_log
X: 通信ログを保存するデータ項目 (更新)
Script (click to open)


// Add Outlook Calendar Event Attendees via Microsoft Graph API v1.0 (ver. 202209)
// (c) 2023, Questetra, Inc. (the MIT License)

//// == 工程コンフィグの参照 / Config Retrieving ==
const oauth2  = configs.get( "conf_OAuth2" ) + "";

const eventId               = configs.get( "conf_eventId" ) + "";
const attendeesList         = engine.findDataByNumber( configs.get( "conf_attendees" ) ) + "";

let attendeesOptionalList;
const dataId_attendeesOptionalList = configs.get( "conf_attendeesOptional" );
if ( dataId_attendeesOptionalList ) {
  attendeesOptionalList = engine.findDataByNumber( dataId_attendeesOptionalList ) + "";
}

const dataId_eventUrl = configs.get( "conf_eventUrl" );
const dataId_log      = configs.get( "conf_log" );


//// == 演算 / Calculating ==
if( eventId == "" ){
  throw `Event ID none.`;
}

const newAttendees = attendeesList.split(",");
let newAttendeesOptional;
if ( attendeesOptionalList ) {
  newAttendeesOptional = attendeesOptionalList.split(",");
}

if ( !attendeesOptionalList ) {
  if ( attendeesList == "null" ) {
    throw `attendeesList none.`;
  }
} else {
  if (( attendeesList == "null" ) && ( attendeesOptionalList == "null" )) {
    throw `attendeesList and attendeesOptionalList none.`;
  }
}

let accessLog = "";

//現時点のイベントデータ取得
let uri = "https://graph.microsoft.com/v1.0/me/events/" + eventId;
let response = httpClient.begin()
  .authSetting( oauth2 )
  .get( uri );
accessLog += "---GET request--- " + response.getStatusCode() + "\n";
accessLog += response.getResponseAsString() + "\n";
//engine.log("res:" + response.getResponseAsString());

const status = response.getStatusCode();
if( status >= 300 ){
  engine.log(accessLog);
  throw `Failed in GET request. status: ${status}`;
}

const jsonObj = JSON.parse( response.getResponseAsString() );
let attendees = jsonObj.attendees;

//イベントデータの更新
let length = attendees.length;
for (let i = 0; i < newAttendees.length; i++) {
  let newAttendee = newAttendees[i];
  attendees[length + i] = {};
  attendees[length + i].emailAddress = {};
  attendees[length + i].emailAddress.address = newAttendee;
}

if ( newAttendeesOptional ) {
  length = attendees.length;
  for (let i = 0; i < newAttendeesOptional.length; i++) {
    let newAttendeeOptional = newAttendeesOptional[i];
    attendees[length + i] = {};
    attendees[length + i].emailAddress = {};
    attendees[length + i].emailAddress.address = newAttendeeOptional;
    attendees[length + i].type = "optional";
  }
}

let requestObj = {};
  requestObj.attendees = [];
  requestObj.attendees = attendees;

engine.log("json:" + JSON.stringify( requestObj ));

let uri2 = "https://graph.microsoft.com/v1.0/me/events/" + eventId;
let response2 = httpClient.begin()
  .authSetting( oauth2 )
  .body( JSON.stringify( requestObj ), "application/json" )
  .patch( uri2 );
accessLog += "---PATCH request--- " + response2.getStatusCode() + "\n";
accessLog += response2.getResponseAsString() + "\n";

const status2 = response2.getStatusCode();
if ( status2 >= 300 ) {
  engine.log(accessLog);
  throw `Failed in PATCH request. status: ${status2}`;
} else {
  const eventUrl = jsonObj.webLink + "";

  if ( dataId_eventUrl !== "" ) {
    engine.setDataByNumber( dataId_eventUrl, eventUrl );
  }
}


//// == ワークフローデータへの代入 / Data Updating ==
if ( dataId_log !== "" ) {
  engine.setDataByNumber( dataId_log, accessLog );
}

Download

warning 自由改変可能な JavaScript (ECMAScript) コードです。いかなる保証もありません。
(アドオン自動工程のインストールは Professional editionでのみ可能です)

Notes

Capture

See Also

%d人のブロガーが「いいね」をつけました。