Outlook 予定表のイベントの参加者追加
Outlook Calendar Event Attendees Add
Outlook 予定表のイベント参加者を追加します。
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
- Outlook-Calendar-Event-Attendees-Add-202307.xml
- 2023-07-03 (C) Questetra, Inc. (MIT License)
(アドオン自動工程のインストールは Professional editionでのみ可能です)
Notes
- Microsoft365(Azure Active Directory)側のアプリケーション登録の方法
- Questetra 側の HTTP 認証設定の方法
- “OneDrive へクラウドワークフロー Questetra からファイル出力する方法”
- “2.2: Questetra 側の OAuth 設定”
※ただし「スコープ」はhttps://graph.microsoft.com/Calendars.ReadWrite offline_access
- “2.2: Questetra 側の OAuth 設定”
- “OneDrive へクラウドワークフロー Questetra からファイル出力する方法”
Capture
