Microsoft 365 Outlook: Insert Calendar Event

Outlook Calendar Event Insert

Outlook 予定表のイベント作成

Inserts an event in the Outlook Calendar. A maximum of three participants can be specified.

Auto Step icon
Configs for this Auto Step
conf_OAuth2
A: OAuth 2.0 Setting *
conf_subject
B: Event subject *
conf_discription
C: Event discription *
conf_location
D: Event location *
conf_startDate
E: Event Start Date *
conf_endDate
F: Event End Date *
conf_timeZone
G: TimeZone for Event Date (ex. Tokyo Standard Time) *
conf_attendees
H: Attendees email address list (comma separated) *
conf_attendeesOptional
I: Optional Attendees email address list (comma separated)
conf_isOnlineMeeting
J: with Online Meeting
conf_isHtmlMail
K: send HTML Mail
conf_eventId
O: Event Id (update)
conf_eventUrl
P: Event URL (update)
conf_onlineMeetingUrl
Q: Online Meeting URL (update)
conf_log
X: Access Log (update)
Script (click to open)


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

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

const subject         = engine.findDataByNumber( configs.get( "conf_subject" ) ) + "";
const content         = engine.findDataByNumber( configs.get( "conf_discription" ) ) + "";
const location        = engine.findDataByNumber( configs.get( "conf_location" ) ) + "";
const startDate       = engine.findDataByNumber( configs.get( "conf_startDate" ) ).toString();
const endDate         = engine.findDataByNumber( configs.get( "conf_endDate" ) ).toString();
const timeZone        = configs.get( "conf_timeZone" ) + "";

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

const dataId_attendeesOptionalList = configs.get( "conf_attendeesOptional" );

const isOnlineMeeting = configs.getObject( "conf_isOnlineMeeting" );
const isHtmlMail      = configs.getObject( "conf_isHtmlMail" );

const dataId_eventId          = configs.get( "conf_eventId" );
const dataId_eventUrl         = configs.get( "conf_eventUrl" );
const dataId_onlineMeetingUrl = configs.get( "conf_onlineMeetingUrl" );
const dataId_log              = configs.get( "conf_log" );


//// == 演算 / Calculating ==
if ( attendeesList == "null" ) {
  throw `attendeesList none.`;
}

let requestObj = {};
  requestObj.subject = subject;
  //未指定の場合を考慮
  if ( content !== "null" ) {
    requestObj.body = {};
    requestObj.body.content = content;
  }
  requestObj.start = {};
  requestObj.start.dateTime = startDate;
  requestObj.start.timeZone = timeZone;
  requestObj.end = {};
  requestObj.end.dateTime = endDate;
  requestObj.end.timeZone = timeZone;
  //未指定の場合を考慮
  if ( location !== "null" ) {
    requestObj.location = {};
    requestObj.location.displayName = location;
  }

  let attendees = new Array();
  attendees = attendeesList.split(",");
  requestObj.attendees = [];
  for (let i = 0; i < attendees.length; i++) {
    let attendee = attendees[i];
    requestObj.attendees[i] = {};
    requestObj.attendees[i].emailAddress = {};
    requestObj.attendees[i].emailAddress.address = attendee;
  }

  if ( dataId_attendeesOptionalList !== "" ) {
    const attendeesLength = attendees.length;

    const attendeesOptionalList = engine.findDataByNumber( dataId_attendeesOptionalList ) + "";
    if ( attendeesOptionalList !== "null" ) {
      let attendeesOptional = new Array();
      attendeesOptional = attendeesOptionalList.split(",");
      const attendeesTotalLength = attendeesLength + attendeesOptional.length;
      for (let i = 0; i < attendeesOptional.length; i++) {
        let attendeeOptional = attendeesOptional[i];
        requestObj.attendees[i + attendeesLength] = {};
        requestObj.attendees[i + attendeesLength].emailAddress = {};
        requestObj.attendees[i + attendeesLength].emailAddress.address = attendeeOptional;
        requestObj.attendees[i + attendeesLength].type = "optional";
      }
    }
  }

  requestObj.isOnlineMeeting = isOnlineMeeting;

  if ( isHtmlMail ) {
    requestObj.body.contentType = "html"
  }

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

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


//// == ワークフローデータへの代入 / Data Updating ==
var status = response.getStatusCode();

if ( status >= 300 ) {
  engine.log(accessLog);
  throw `Failed in POST request. status: ${status}`;
} else {
  const jsonObj = JSON.parse( response.getResponseAsString() );
  const eventId = jsonObj.id + "";
  const eventUrl = jsonObj.webLink + "";

  if ( dataId_eventId !== "" ) {
    engine.setDataByNumber( dataId_eventId, eventId );
  }
  if ( dataId_eventUrl !== "" ) {
    engine.setDataByNumber( dataId_eventUrl, eventUrl );
  }
  if ( ( isOnlineMeeting ) && ( dataId_onlineMeetingUrl !== "" ) ) {
    const onlineMeetingUrl = jsonObj.onlineMeeting.joinUrl + "";
    engine.setDataByNumber( dataId_onlineMeetingUrl, onlineMeetingUrl );
  }
}

if ( dataId_log !== "" ) {
  engine.setDataByNumber( dataId_log, accessLog );
}

Download

warning Freely modifiable JavaScript (ECMAScript) code. No warranty of any kind.
(Installing Addon Auto-Steps are available only on the Professional edition.)

Notes

Capture

See Also

Scroll to Top

Discover more from Questetra Support

Subscribe now to keep reading and get access to the full archive.

Continue reading