今回の記事では、新たに作成した日程調整アプリのサンプルを公開します。
モダンコントロールも利用しつつ、デザイン面(UX/UI)・機能面の両方に力を入れたアプリになっています。
コピペで簡単に導入できるため、ぜひお試しいただき周囲の方に勧めていただければと思います。
(あくまでサンプルのため、必要に応じて修正・カスタマイズしてご利用ください。)
アプリの概要
できること
- 複数人で会議を行う場合などに、全員が空いている時間を探すことができる
- 空いている時間が分かったら、その時間でOutlookの予定・会議を作成することができる
画面イメージ
画面イメージは次の通りです。

詳しい利用方法は、次回の記事(利用編)にて紹介しています。
導入手順
新規アプリの作成
まずは新規で空のアプリを作成していきます。
- Power Appsポータルにアクセスし、左のメニューから「作成」をクリックします
- 「空のキャンバスを使用して開始」をクリックし、ポップアップにて「タブレットPCのサイズ」をクリックします
- Power Appsの開発画面が表示されることを確認します
※画面は変更される場合がありますので、適宜読み替えて進めてください。

コネクタの追加
続いて、開発画面で必要なコネクタを追加していきます。
OnStart式の入力
続いて、アプリのOnStartプロパティに式を入力します。
次の式をコピーしてください(コードが長いため、下記の手順で実施してください)
- 下記「▶OnStart式を開く」を選択し、式を表示
- 右上の青いコピーボタンを選択
- 再度「▼OnStart式を開く」を選択し、式を非表示にする
// © 2025 Hiromaru. This work is licensed under CC BY-NC 4.0.
Concurrent(
LoadData(
colAttendees,
"colAttendeesCache",
true
),
LoadData(
colSearchSettings,
"colSearchSettingsCache",
true
),
Set(
gblAttendeeTypeList,
Table(
{
Type: "user",
DisplayName: "ユーザー"
},
{
Type: "place",
DisplayName: "場所"
},
{
Type: "resource",
DisplayName: "備品"
}
)
),
Set(
gblFreeBusyStatusCategory,
Table(
{
EnglishStatus: "free",
JapaneseStatus: "空き時間",
Category: "空き時間",
CategoryFontColor: RGBA(
25,
118,
210,
1
),
CategoryBackgroundColor: RGBA(
25,
118,
210,
0.1
)
},
{
EnglishStatus: "busy",
JapaneseStatus: "予定あり",
Category: "予定あり",
CategoryFontColor: RGBA(
239,
83,
80,
1
),
CategoryBackgroundColor: RGBA(
239,
83,
80,
0.1
)
},
{
EnglishStatus: "tentative",
JapaneseStatus: "仮の予定",
Category: "その他",
CategoryFontColor: RGBA(
80,
80,
80,
1
),
CategoryBackgroundColor: RGBA(
80,
80,
80,
0.1
)
},
{
EnglishStatus: "oof",
JapaneseStatus: "不在",
Category: "その他",
CategoryFontColor: RGBA(
80,
80,
80,
1
),
CategoryBackgroundColor: RGBA(
80,
80,
80,
0.1
)
},
{
EnglishStatus: "workingElsewhere",
JapaneseStatus: "他の場所で仕事中",
Category: "その他",
CategoryFontColor: RGBA(
80,
80,
80,
1
),
CategoryBackgroundColor: RGBA(
80,
80,
80,
0.1
)
},
{
EnglishStatus: "unknown",
JapaneseStatus: "不明",
Category: "その他",
CategoryFontColor: RGBA(
80,
80,
80,
1
),
CategoryBackgroundColor: RGBA(
80,
80,
80,
0.1
)
}
)
),
Set(
gblSearchTimeframeMinutes,
Table(
{
DisplayValue: "00",
Value: 0
},
{
DisplayValue: "05",
Value: 5
},
{
DisplayValue: "10",
Value: 10
},
{
DisplayValue: "15",
Value: 15
},
{
DisplayValue: "20",
Value: 20
},
{
DisplayValue: "25",
Value: 25
},
{
DisplayValue: "30",
Value: 30
},
{
DisplayValue: "35",
Value: 35
},
{
DisplayValue: "40",
Value: 40
},
{
DisplayValue: "45",
Value: 45
},
{
DisplayValue: "50",
Value: 50
},
{
DisplayValue: "55",
Value: 55
}
)
),
Set(
gblThemeColorBlue,
RGBA(
25,
118,
210,
1
)
),
Set(
gblThemeColorRed,
RGBA(
239,
83,
80,
1
)
),
Set(
gblThemeColorGray,
RGBA(
200,
200,
200,
1
)
),
Set(
gblThemeColorGreen,
RGBA(
104,
159,
56,
1
)
),
Set(
gblTabFocusable,
0
),
Set(
gblTabNonFocusable,
-1
),
ClearCollect(
colRoomList,
Office365Outlook.GetRoomsV2().value.address
)
);
If(
IsEmpty(colAttendees),
ClearCollect(
colAttendees,
AddColumns(
Filter(
Office365ユーザー.SearchUserV2(
{
isSearchTermRequired: false,
searchTerm: User().Email,
top: 10
}
).value,
Mail = User().Email
),
Required,
true,
AttendeeType,
"user",
Picture,
Office365ユーザー.UserPhotoV2(ThisRecord.Id)
)
)
);
Concurrent(
Reset(galSearchAttendeeList),
Reset(cmbSelectStartHour),
Reset(cmbSelectStartMinute),
Reset(cmbSelectEndHour),
Reset(cmbSelectEndMinute),
Reset(chkActivityDomainSettings),
Reset(numInputMeetingDuration)
)
コピーした式をAppのOnStartプロパティに貼り付けます。
(この時点ではエラーが発生しますが、以降の手順を実施することで解消されます)

各画面の作成
続いて、各画面をコピー・貼り付けしていきます。
日程検索画面のコピー&貼り付け
まずは日程検索画面のコードをコピーしていきます。
コードが長いため、下記の手順でコピーを実施してください。
- 下記「▶日程検索画面のコードを開く」を選択し、日程検索画面のコードを表示
- 右上の青いコピーボタンを選択
- 再度「▼日程検索画面のコードを開く」を選択し、日程検索画面のコードを非表示にする
Screens:
SearchAvailabilityScreen:
Properties:
LoadingSpinnerColor: =RGBA(56, 96, 178, 1)
OnVisible: |-
=Set(
gblProgressBarItems,
Table(
{
stepNumber: "1",
itemLabel: "日程検索画面",
isCurrentStep: true,
isCompleted: false
},
{
stepNumber: "2",
itemLabel: "日程選択画面",
isCurrentStep: false,
isCompleted: false
},
{
stepNumber: "3",
itemLabel: "予定作成画面",
isCurrentStep: false,
isCompleted: false
}
)
)
Children:
- ctnSearchAvailabilityScreen:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
Height: =Parent.Height
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Vertical
LayoutGap: =10
LayoutJustifyContent: =LayoutJustifyContent.Center
PaddingBottom: =10
PaddingLeft: =10
PaddingRight: =10
PaddingTop: =10
Width: =Parent.Width
Children:
- ctnAppTitle1:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
Fill: =gblThemeColorBlue
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Horizontal
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
LayoutMinWidth: =0
Children:
- ctnAppTitleLeft1:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
LayoutDirection: =LayoutDirection.Horizontal
LayoutMinHeight: =0
LayoutMinWidth: =0
- ctnAppTitleCenter1:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =8
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Horizontal
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
LayoutMinWidth: =0
Children:
- icoAppTitleCalendar1:
Control: Icon@0.0.7
Properties:
Height: =Self.Width
Icon: ="Calendar"
IconColor: =RGBA(255, 255, 255, 1)
TabIndex: =gblTabNonFocusable
Width: =Parent.Height * 0.6
X: =34
Y: =4
- lblAppTitle1:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
FontColor: =RGBA(255, 255, 255, 1)
Height: =Parent.Height
Size: =24
Text: ="日程調整アプリ"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =200
X: =85
- ctnAppTitleRight1:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Vertical
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
LayoutMinWidth: =0
PaddingTop: =8
Children:
- ctnHowToUse1:
Control: GroupContainer@1.3.0
Variant: ManualLayout
Properties:
AlignInContainer: =AlignInContainer.Center
BorderColor: =RGBA(255, 255, 255, 1)
DropShadow: =DropShadow.Bold
Fill: =RGBA(255, 255, 255, 1)
FillPortions: =3
LayoutMinHeight: =0
LayoutMinWidth: =0
RadiusBottomLeft: =Self.Width / 2
RadiusBottomRight: =Self.Width / 2
RadiusTopLeft: =Self.Width / 2
RadiusTopRight: =Self.Width / 2
Width: =Self.Height
Children:
- btnHowToUse1:
Control: Button@0.0.45
Properties:
AcceptsFocus: =Not(ctnSearchAvailabilityPopupBackground.Visible)
AccessibleLabel: ="使い方ページへの遷移ボタン"
Appearance: ='ButtonCanvas.Appearance'.Transparent
BorderColor: =RGBA(255, 255, 255, 1)
BorderRadius: =Self.Width / 2
BorderThickness: =0
FontColor: =gblThemeColorBlue
FontSize: =Parent.Width * 0.75
FontWeight: =FontWeight.Normal
Height: =Parent.Width
Icon: ="Question"
IconStyle: ='ButtonCanvas.IconStyle'.Filled
Layout: ='ButtonCanvas.Layout'.IconOnly
OnSelect: =Launch("https://power365medium.com/usage-original-scheduling-app#search-availability-screen")
Text: =
Width: =Parent.Width
- btnHowToUseLabel1:
Control: Button@0.0.45
Properties:
AcceptsFocus: =false
AccessibleLabel: ="使い方ページへの遷移ラベル"
Appearance: ='ButtonCanvas.Appearance'.Transparent
BorderColor: =RGBA(255, 255, 255, 1)
BorderRadius: =Self.Width / 2
BorderThickness: =0
FillPortions: =2
FontColor: =RGBA(255, 255, 255, 1)
FontSize: =16
FontWeight: =FontWeight.Semibold
Height: =0
IconStyle: ='ButtonCanvas.IconStyle'.Filled
Layout: ='ButtonCanvas.Layout'.TextOnly
LayoutMinHeight: =0
OnSelect: =Select(btnHowToUse1)
Text: ="使い方"
Width: =Parent.Width
- ctnProgressBarArea1:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Vertical
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
Children:
- ctnProgressBar1:
Control: GroupContainer@1.3.0
Variant: ManualLayout
Properties:
AlignInContainer: =AlignInContainer.Center
DropShadow: =DropShadow.None
EnableChildFocus: =false
LayoutMinHeight: =0
Width: =800
Children:
- shpProgressBarGray1:
Control: Rectangle@2.3.0
Properties:
AccessibleLabel: ="進捗を表す灰色のバー"
BorderColor: =RGBA(0, 18, 107, 1)
Fill: =RGBA(200, 200, 200, 1)
FocusedBorderThickness: =1
Height: =3
TabIndex: =gblTabNonFocusable
Width: =Parent.Width * 2 / 3
X: =Parent.Width / 6
Y: =(Parent.Height / 4) - (Self.Height / 2)
- shpProgressBarBlue1:
Control: Rectangle@2.3.0
Properties:
AccessibleLabel: ="進捗を表す青いバー"
BorderColor: =RGBA(0, 18, 107, 1)
Fill: =gblThemeColorBlue
FocusedBorderThickness: =1
Height: =3
TabIndex: =gblTabNonFocusable
Width: =0
X: =Parent.Width / 6
Y: =(Parent.Height / 4) - (Self.Height / 2)
- galProgressBar1:
Control: Gallery@2.15.0
Variant: BrowseLayout_Horizontal_TwoTextOneImageVariant_ver5.0
Properties:
AccessibleLabel: ="日程検索から予定作成までのステップバー"
BorderColor: =gblThemeColorBlue
DelayItemLoading: =false
FocusedBorderThickness: =2
Height: =61
ItemAccessibleLabel: ="日程検索から予定作成までのステップ"
Items: =gblProgressBarItems
LoadingSpinnerColor: =gblThemeColorBlue
Selectable: =false
TabIndex: =gblTabNonFocusable
TemplateSize: =Self.Width / 3
Width: =Parent.Width
Children:
- ctnProgressStep1:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
EnableChildFocus: =false
Height: =61
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Vertical
LayoutJustifyContent: =LayoutJustifyContent.Center
Width: =Parent.TemplateWidth
Children:
- ctnProgressStepBadge1:
Control: GroupContainer@1.3.0
Variant: ManualLayout
Properties:
AlignInContainer: =AlignInContainer.Center
BorderColor: =gblThemeColorBlue
DropShadow: |-
=If(
ThisItem.isCurrentStep,
DropShadow.Regular,
DropShadow.None
)
EnableChildFocus: =false
Fill: =RGBA(255, 255, 255, 1)
Height: =21
LayoutMinHeight: =0
LayoutMinWidth: =0
RadiusBottomLeft: =Self.Height / 2
RadiusBottomRight: =Self.Height / 2
RadiusTopLeft: =Self.Height / 2
RadiusTopRight: =Self.Height / 2
Width: =Self.Height
Children:
- lblProgressStep1:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
BorderColor: |-
=If(
ThisItem.isCurrentStep,
gblThemeColorBlue,
gblThemeColorGray
)
BorderRadius: =Self.Height / 2
BorderStyle: =BorderStyle.Solid
BorderThickness: =2
Fill: |-
=If(
ThisItem.isCurrentStep,
RGBA(
255,
255,
255,
1
),
RGBA(
200,
200,
200,
1
)
)
FontColor: |-
=If(
ThisItem.isCurrentStep,
gblThemeColorBlue,
Color.White
)
Height: =Self.Width
Size: =18
Text: =ThisItem.stepNumber
VerticalAlign: =VerticalAlign.Middle
Visible: =Not(ThisItem.isCompleted)
Weight: ='TextCanvas.Weight'.Semibold
Width: =Parent.Width
X: =(Parent.Width - Self.Width) / 2
Y: =(Parent.Height - Self.Height) / 2
- icoProgressStep1:
Control: Icon@0.0.7
Properties:
Height: =Parent.Height
Icon: ="CheckmarkCircle"
IconColor: =gblThemeColorBlue
IconStyle: ='Icon.IconStyle'.Filled
TabIndex: =gblTabNonFocusable
Visible: =ThisItem.isCompleted
Width: =Parent.Width
X: =(Parent.Width - Self.Width) / 2
Y: =(Parent.Height - Self.Height) / 2
- lblProgressStepTitle1:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
BorderRadius: =Self.Height / 2
FillPortions: =1
FontColor: |-
=If(
ThisItem.isCompleted,
gblThemeColorGray,
ThisItem.isCurrentStep,
gblThemeColorBlue,
gblThemeColorGray
)
Height: =Parent.Height
LayoutMinHeight: =0
Size: =18
Text: =ThisItem.itemLabel
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Medium
Width: =Parent.Width
- ctnSearchSettingsArea:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =8
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Horizontal
LayoutGap: =20
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
LayoutMinWidth: =0
PaddingBottom: =2
PaddingLeft: =2
PaddingRight: =2
PaddingTop: =2
Children:
- ctnSelectAttendee:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
LayoutDirection: =LayoutDirection.Vertical
LayoutGap: =15
PaddingBottom: =10
PaddingLeft: =10
PaddingRight: =10
PaddingTop: =10
Children:
- ctnSelectAttendeeDetails:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =2
LayoutDirection: =LayoutDirection.Vertical
LayoutMinHeight: =0
Children:
- lblSelectAttendeeTitle:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
AlignInContainer: =AlignInContainer.Stretch
FillPortions: =1
Height: =30
PaddingLeft: =30
Size: =18
Text: ="出席者追加"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =160
X: =20
Y: =4
- lblSelectAttendeeDetails:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
AlignInContainer: =AlignInContainer.Stretch
FillPortions: =2
Height: =50
LayoutMinWidth: =0
PaddingLeft: =40
Size: =15
Text: |-
="1. 日程調整の対象者を検索して追加します
2. 種類(ユーザー/場所/備品) や 必須要否(必須/任意) を選択します
* Teams会議を開催したい場合は、後の画面(③予定作成画面)で設定できます"
VerticalAlign: =VerticalAlign.Top
Weight: ='TextCanvas.Weight'.Regular
Width: =606
X: =10
Y: =30
- ctnAttendeePicker:
Control: GroupContainer@1.3.0
Variant: ManualLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =7
Height: =450
LayoutMinHeight: =0
Width: =Parent.Width * 0.95
X: =10
Y: =100
Children:
- ctnSearchAttendeeList:
Control: GroupContainer@1.3.0
Variant: ManualLayout
Properties:
DropShadow: =DropShadow.None
Height: =Parent.Height - Self.Y
Width: =Parent.Width - Self.X
X: =txtInputAttendeeSearchQuery.X
Y: =txtInputAttendeeSearchQuery.Height + 1
Children:
- galSearchAttendeeList:
Control: Gallery@2.15.0
Variant: BrowseLayout_Vertical_TwoTextOneImageVariant_ver5.0
Properties:
AccessibleLabel: ="出席者リスト"
BorderColor: =RGBA(0, 0, 0, 0)
Default: =Last(colAttendees)
FocusedBorderColor: =RGBA(200, 200, 200, 1)
FocusedBorderThickness: =1
Height: =Parent.Height - Self.Y
ItemAccessibleLabel: ="出席者"
Items: =colAttendees
LoadingSpinnerColor: =gblThemeColorBlue
TabIndex: =gblTabNonFocusable
TemplateSize: =70
Visible: =Parent.Visible
Width: =Parent.Width
Children:
- ctnSearchAttendee:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
Height: =Parent.TemplateHeight
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Horizontal
LayoutGap: =10
LayoutJustifyContent: =LayoutJustifyContent.Center
PaddingRight: =15
Width: =Parent.TemplateWidth
Children:
- avtSearchAttendee:
Control: Avatar@1.0.40
Properties:
AccessibleLabel: ="出席者プロフィール画像"
Badge: ='Avatar.Badge'.None
FillPortions: =1
Height: =48
Image: =ThisItem.Picture
LayoutMinWidth: =0
Name: =ThisItem.DisplayName
Width: =48
X: =8
Y: =16
- ctnSearchAttendeeInfoLabel:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
AlignInContainer: =AlignInContainer.SetByContainer
DropShadow: =DropShadow.None
FillPortions: =5
Height: =Parent.Height
LayoutDirection: =LayoutDirection.Vertical
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =Parent.Height
LayoutMinWidth: =0
Width: =
Children:
- lblSearchAttendeeDisplayName:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
Height: =20
Text: |-
=ThisItem.DisplayName & If(
ThisItem.Mail = User().Email,
" (あなた)"
) & If(
Not(IsBlank(ThisItem.Department)),
" / " & ThisItem.Department
)
VerticalAlign: =VerticalAlign.Top
Weight: ='TextCanvas.Weight'.Semibold
Width: =Parent.Width
Wrap: =false
X: =
Y: =
- lblSearchAttendeeEmail:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
Height: =20
Text: =ThisItem.Mail
VerticalAlign: =VerticalAlign.Top
Width: =Parent.Width
Wrap: =false
X: =
Y: =
- ctnSelectSearchAttendeeType:
Control: GroupContainer@1.3.0
Variant: ManualLayout
Properties:
AlignInContainer: =AlignInContainer.Center
DropShadow: =DropShadow.None
FillPortions: =3
Height: =Parent.Height
LayoutMinHeight: =0
LayoutMinWidth: =0
Children:
- cmbSearchSelectAttendeeType:
Control: ComboBox@0.0.51
Properties:
AccessibleLabel: ="出席者のユーザー種類選択"
DefaultSelectedItems: |-
=[
LookUp(
gblAttendeeTypeList,
Type = ThisItem.AttendeeType,
DisplayName
)
]
DisplayMode: |-
=If(
ctnSearchAvailabilityPopupBackground.Visible,
DisplayMode.Disabled,
DisplayMode.Edit
)
FontSize: =13
Height: =36
InputTextPlaceholder: ="種類の選択"
IsSearchable: =false
Items: |-
=RenameColumns(
gblAttendeeTypeList.DisplayName,
DisplayName,
Value
)
OnChange: |-
=Patch(
colAttendees,
ThisItem,
{
AttendeeType: LookUp(
gblAttendeeTypeList,
DisplayName = Self.Selected.Value,
Type
)
}
)
PaddingLeft: =40
Width: =Parent.Width
X: =
Y: =(Parent.Height - Self.Height) / 2
- icoSearchSelectAttendeeType:
Control: Icon@0.0.7
Properties:
Height: =24
Icon: =Switch(ThisItem.AttendeeType,"user","People","place","Home","resource","Print")
IconColor: =gblThemeColorBlue
IconStyle: ='Icon.IconStyle'.Outline
TabIndex: =gblTabNonFocusable
Width: =24
X: =8
Y: =((Parent.Height - Self.Height) / 2) + 1
- ctnSelectSearchAttendeesRequired:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
AlignInContainer: =AlignInContainer.Center
FillPortions: =2
Height: =34
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Horizontal
LayoutGap: =-10
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
LayoutMinWidth: =0
PaddingLeft: =2
PaddingRight: =2
RadiusBottomLeft: =(Self.Height + Self.BorderThickness) / 2
RadiusBottomRight: =(Self.Height + Self.BorderThickness) / 2
RadiusTopLeft: =(Self.Height + Self.BorderThickness) / 2
RadiusTopRight: =(Self.Height + Self.BorderThickness) / 2
Children:
- btnSelectSearchAttendeesRequired:
Control: Classic/Button@2.2.0
Properties:
BorderColor: =RGBA(0, 0, 0, 0)
BorderThickness: =0
Color: =RGBA(160, 160, 160, 1)
DisabledBorderColor: =RGBA(0, 0, 0, 0)
DisabledColor: =RGBA(255, 255, 255, 1)
DisabledFill: =gblThemeColorRed
DisplayMode: |-
=If(
ThisItem.Required,
DisplayMode.Disabled,
DisplayMode.Edit
)
Fill: =RGBA(0, 0, 0, 0)
FillPortions: =1
FocusedBorderColor: =Self.DisabledFill
FocusedBorderThickness: =1
Font: =Font.'Segoe UI'
FontWeight: |-
=If(
ThisItem.Required,
FontWeight.Semibold,
FontWeight.Normal
)
Height: =30
HoverBorderColor: =Self.BorderColor
HoverColor: =Self.Color
HoverFill: =Self.Fill
LayoutMinWidth: =0
OnSelect: |-
=Patch(
colAttendees,
ThisItem,
{Required: true}
)
PaddingBottom: =0
PaddingLeft: =0
PaddingRight: =0
PaddingTop: =0
PressedBorderColor: =Color.Transparent
PressedFill: =Self.Fill
RadiusBottomLeft: =Self.Height / 2
RadiusBottomRight: =Self.Height / 2
RadiusTopLeft: =Self.Height / 2
RadiusTopRight: =Self.Height / 2
Size: =9
TabIndex: |-
=If(
ctnSearchAvailabilityPopupBackground.Visible,
gblTabNonFocusable,
gblTabFocusable
)
Text: ="必須"
Width: =50
X: =2
Y: =2
- btnSelectSearchAttendeesOptional:
Control: Classic/Button@2.2.0
Properties:
BorderColor: =RGBA(0, 0, 0, 0)
BorderThickness: =0
Color: =RGBA(160, 160, 160, 1)
DisabledBorderColor: =RGBA(0, 0, 0, 0)
DisabledColor: =RGBA(255, 255, 255, 1)
DisabledFill: =gblThemeColorBlue
DisplayMode: |-
=If(
ThisItem.Required,
DisplayMode.Edit,
DisplayMode.Disabled
)
Fill: =RGBA(0, 0, 0, 0)
FillPortions: =1
FocusedBorderColor: =Self.DisabledFill
FocusedBorderThickness: =1
Font: =Font.'Segoe UI'
FontWeight: |-
=If(
ThisItem.Required,
FontWeight.Normal,
FontWeight.Semibold
)
Height: =30
HoverBorderColor: =Self.BorderColor
HoverColor: =Self.Color
HoverFill: =Self.Fill
LayoutMinWidth: =0
OnSelect: |-
=Patch(
colAttendees,
ThisItem,
{Required: false}
)
PressedBorderColor: =Color.Transparent
PressedFill: =Self.Fill
RadiusBottomLeft: =Self.Height / 2
RadiusBottomRight: =Self.Height / 2
RadiusTopLeft: =Self.Height / 2
RadiusTopRight: =Self.Height / 2
Size: =9
TabIndex: |-
=If(
ctnSearchAvailabilityPopupBackground.Visible,
gblTabNonFocusable,
gblTabFocusable
)
Text: ="任意"
Width: =50
X: =46
Y: =2
- btnDeleteSearchAttendee:
Control: Button@0.0.45
Properties:
AcceptsFocus: =Not(ctnSearchAvailabilityPopupBackground.Visible)
AccessibleLabel: ="出席者削除ボタン"
Align: =Align.Center
Appearance: ='ButtonCanvas.Appearance'.Transparent
DisplayMode: |-
=If(
ThisItem.Mail = User().Email,
DisplayMode.Disabled,
DisplayMode.Edit
)
FillPortions: =1
FontColor: =RGBA(255, 0, 0, 1)
FontSize: =30
Height: =30
Icon: ="Delete"
IconStyle: ='ButtonCanvas.IconStyle'.Outline
Layout: ='ButtonCanvas.Layout'.IconOnly
LayoutMinWidth: =0
OnSelect: |-
=Remove(
colAttendees,
ThisItem
)
Text: =
VerticalAlign: =VerticalAlign.Middle
Width: =48
X: =Parent.Width - 40
Y: =9
- ctnSuggestedAttendeeArea:
Control: GroupContainer@1.3.0
Variant: ManualLayout
Properties:
DropShadow: =DropShadow.Regular
Height: =galSuggestedAttendee.Height
Visible: =locAttendeesSuggestionVisible
Width: =txtInputAttendeeSearchQuery.Width - 4
X: =txtInputAttendeeSearchQuery.X + 2
Y: =txtInputAttendeeSearchQuery.Height
Children:
- galSuggestedAttendee:
Control: Gallery@2.15.0
Variant: BrowseLayout_Vertical_TwoTextOneImageVariant_ver5.0
Properties:
AccessibleLabel: ="ユーザー予測候補リスト"
BorderColor: =RGBA(200, 200, 200, 1)
Fill: =RGBA(255, 255, 255, 1)
FocusedBorderThickness: =1
Height: |-
=If(
Self.AllItemsCount <= 1,
70,
Self.AllItemsCount = 2,
140,
Self.AllItemsCount >= 3,
210
)
ItemAccessibleLabel: ="ユーザー予測候補"
Items: =FirstN(colSuggestedAttendees,5)
LoadingSpinnerColor: =gblThemeColorBlue
TabIndex: |-
=If(
ctnSearchAvailabilityPopupBackground.Visible,
gblTabNonFocusable,
gblTabFocusable
)
TemplateSize: =70
Visible: =Parent.Visible
Width: =Parent.Width
Children:
- ctnSuggestedAttendee:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
Height: =Parent.TemplateHeight
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Horizontal
PaddingLeft: =20
Width: =Parent.TemplateWidth
Children:
- avtSuggestedAttendee:
Control: Avatar@1.0.40
Properties:
AccessibleLabel: ="ユーザー予測候補のプロフィール画像"
Badge: ='Avatar.Badge'.None
Height: =48
Image: =ThisItem.Picture
Name: =ThisItem.DisplayName
Width: =48
X: =8
Y: =16
- ctnSuggestedAttendeeInfo:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
AlignInContainer: =AlignInContainer.SetByContainer
DropShadow: =DropShadow.None
Height: =Parent.Height
LayoutDirection: =LayoutDirection.Vertical
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =Parent.Height
PaddingLeft: =20
Width: =
Children:
- lblSuggestedAttendeeDisplayName:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
Height: =24
Size: =15
Text: |-
=ThisItem.DisplayName & If(
ThisItem.Mail = User().Email,
" (あなた)"
) & If(
Not(IsBlank(ThisItem.Department)),
" / " & ThisItem.Department
)
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =Parent.Width - Parent.PaddingLeft
Wrap: =false
X: =
Y: =
- lblSuggestedAttendeeEmail:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
Height: =24
Text: =ThisItem.Mail
VerticalAlign: =VerticalAlign.Middle
Width: =Parent.Width - Parent.PaddingLeft
Wrap: =false
X: =
Y: =
- btnSelectAttendee:
Control: Classic/Button@2.2.0
Properties:
BorderColor: =RGBA(0, 0, 0, 0)
BorderThickness: =0
Color: =RGBA(255, 255, 255, 1)
DisabledBorderColor: =RGBA(0, 0, 0, 0)
DisabledColor: =gblThemeColorRed
DisabledFill: =RGBA(240, 240, 240, 0.9)
DisplayMode: |-
=If(
ThisItem.Mail in colAttendees.Mail,
DisplayMode.Disabled,
DisplayMode.Edit
)
Fill: =RGBA(0, 0, 0, 0)
FocusedBorderColor: =RGBA(200, 200, 200, 1)
FocusedBorderThickness: =1
Font: =Font.'Segoe UI'
Height: =70
HoverBorderColor: =RGBA(0, 0, 0, 0)
HoverColor: =RGBA(255, 255, 255, 1)
HoverFill: =RGBA(40, 40, 40, 0.1)
OnSelect: |-
=Collect(
colAttendees,
ThisItem
);
Select(btnHideAttendeeSuggestion);
Reset(txtInputAttendeeSearchQuery)
PressedBorderColor: =RGBA(0, 69, 120, 1)
PressedColor: =RGBA(255, 255, 255, 1)
PressedFill: =RGBA(40, 40, 40, 0.1)
RadiusBottomLeft: =0
RadiusBottomRight: =0
RadiusTopLeft: =0
RadiusTopRight: =0
Size: =10
TabIndex: |-
=If(
ctnSearchAvailabilityPopupBackground.Visible,
gblTabNonFocusable,
gblTabFocusable
)
Text: |-
=If(
Self.DisplayMode = DisplayMode.Disabled,
"すでに出席者として追加されています"
)
Width: =Parent.Width
- lblSuggestedAttendeeNotFound:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
Height: =Parent.Height
Size: =16
Text: ="ユーザーが見つかりませんでした"
VerticalAlign: =VerticalAlign.Middle
Visible: |-
=And(
Not(locShowSpinner),
IsEmpty(colSuggestedAttendees)
)
Width: =Parent.Width
- spnLoadAttendeeSuggestion:
Control: Spinner@1.4.6
Properties:
AccessibleLabel: ="ユーザー予測候補のローディングアニメーション"
Height: =20
SpinnerSize: ='Spinner.SpinnerSize'.Tiny
Visible: =locShowSpinner
Width: =20
X: =20
Y: =(txtInputAttendeeSearchQuery.Height - Self.Height) / 2
- txtInputAttendeeSearchQuery:
Control: TextInput@0.0.54
Properties:
AccessibleLabel: ="出席者の検索欄"
Appearance: ='TextInputCanvas.Appearance'.FilledDarker
DisplayMode: |-
=If(
ctnSearchAvailabilityPopupBackground.Visible,
DisplayMode.Disabled,
DisplayMode.Edit
)
FontSize: =15
Height: =btnShowAttendeeSuggestion.Width
Mode: ='TextInputCanvas.Mode'.SingleLine
OnChange: =Select(btnShowAttendeeSuggestion)
PaddingRight: =40
Placeholder: ="名前 or Emailで検索・追加"
TriggerOutput: ='TextInputCanvas.TriggerOutput'.Delayed
Type: ='TextInputCanvas.Type'.Search
Width: =Parent.Width - spnLoadAttendeeSuggestion.Width - spnLoadAttendeeSuggestion.X - 20
X: =spnLoadAttendeeSuggestion.Width + spnLoadAttendeeSuggestion.X
- btnHideAttendeeSuggestion:
Control: Button@0.0.45
Properties:
AcceptsFocus: =Not(ctnSearchAvailabilityPopupBackground.Visible)
AccessibleLabel: ="ユーザー予測候補を閉じるボタン"
Appearance: ='ButtonCanvas.Appearance'.Transparent
Height: =40
Icon: ="ChevronUp"
OnSelect: |-
=UpdateContext({locAttendeesSuggestionVisible: false})
Text: =
Visible: =locAttendeesSuggestionVisible
Width: =40
X: =btnShowAttendeeSuggestion.X
- btnShowAttendeeSuggestion:
Control: Button@0.0.45
Properties:
AcceptsFocus: =Not(ctnSearchAvailabilityPopupBackground.Visible)
AccessibleLabel: ="ユーザー予測候補を開くボタン"
Appearance: ='ButtonCanvas.Appearance'.Transparent
Height: =40
Icon: ="ChevronDown"
OnSelect: |-
=UpdateContext(
{
locAttendeesSuggestionVisible: true,
locShowSpinner: true
}
);
ClearCollect(
colSuggestedAttendees,
AddColumns(
Office365ユーザー.SearchUserV2(
{
isSearchTermRequired: false,
searchTerm: txtInputAttendeeSearchQuery.Value,
top: 5
}
).value As attendee,
Required,
true,
AttendeeType,
If(
attendee.Mail in colRoomList.address,
"place",
"user"
),
Picture,
Office365ユーザー.UserPhotoV2(attendee.Id)
)
);
UpdateContext({locShowSpinner: false})
Text: =
Visible: =!locAttendeesSuggestionVisible
Width: =40
X: =txtInputAttendeeSearchQuery.X + txtInputAttendeeSearchQuery.Width - Self.Width
- ctnSearchDateTimeSettings:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
LayoutDirection: =LayoutDirection.Vertical
LayoutGap: =5
PaddingBottom: =10
PaddingLeft: =10
PaddingRight: =10
PaddingTop: =10
Children:
- ctnSearchDateTimeSettingsDetails:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =3
LayoutDirection: =LayoutDirection.Vertical
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
Children:
- lblSearchDateTimeSettingsDetails:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
AlignInContainer: =AlignInContainer.Stretch
FillPortions: =1
Height: =30
PaddingLeft: =30
Size: =18
Text: ="日程範囲設定"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =160
X: =20
Y: =4
- lblSearchDateTimeSettingsTitle:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
AlignInContainer: =AlignInContainer.Stretch
FillPortions: =2
Height: =50
PaddingLeft: =40
Size: =15
Text: |-
="いつからいつまでの範囲で日程を検索するか・会議の長さを設定します。
すべて日本時間で指定してください。"
VerticalAlign: =VerticalAlign.Top
Weight: ='TextCanvas.Weight'.Regular
Width: =606
X: =10
Y: =30
- ctnSearchStartDate:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =3
LayoutDirection: =LayoutDirection.Vertical
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
PaddingLeft: =40
Children:
- lblSearchStartDateTitle:
Control: Text@0.0.51
Properties:
FillPortions: =3
Height: =24
LayoutMinHeight: =0
Text: ="検索範囲 (開始日)"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =Parent.Width - Self.X
X: =40
Y: =5
- dtpSearchStartDateTime:
Control: DatePicker@0.0.46
Properties:
AccessibleLabel: ="検索開始日の選択"
DisplayMode: |-
=If(
ctnSearchAvailabilityPopupBackground.Visible,
DisplayMode.Disabled,
DisplayMode.Edit
)
FillPortions: =4
Height: =40
LayoutMinHeight: =0
OnChange: =
Placeholder: ="日付の選択"
SelectedDate: =Today()
ValidationState: |-
=If(
Or(
locSearchStartDateTimeError,
locSearchDateRangeError
),
"Error",
"None"
)
Width: =300
X: =40
Y: =30
- lblSearchStartDateErrorMessage:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
AlignInContainer: =AlignInContainer.Stretch
FillPortions: =3
FontColor: =gblThemeColorRed
Height: =24
LayoutMinHeight: =0
PaddingLeft: =10
Size: =13
Text: |-
=If(
locSearchStartDateTimeError,
"本日以降の日付を選択してください",
locSearchDateRangeError,
"検索期間は30日以内で指定してください。検索開始日と終了日の差が大きすぎます",
""
)
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =560
X: =40
Y: =70
- ctnSearchEndDate:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =3
LayoutDirection: =LayoutDirection.Vertical
LayoutMinHeight: =0
PaddingLeft: =40
Children:
- lblSearchEndDateTitle:
Control: Text@0.0.51
Properties:
FillPortions: =3
Height: =30
LayoutMinHeight: =0
Text: ="検索範囲 (終了日)"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =Parent.Width - Self.X
X: =40
Y: =5
- dtpSearchEndDateTime:
Control: DatePicker@0.0.46
Properties:
AccessibleLabel: ="検索終了日の選択"
DisplayMode: |-
=If(
ctnSearchAvailabilityPopupBackground.Visible,
DisplayMode.Disabled,
DisplayMode.Edit
)
FillPortions: =4
Height: =40
LayoutMinHeight: =0
Placeholder: ="日付の選択"
SelectedDate: =Today()
ValidationState: |-
=If(
Or(
locSearchEndDateTimeError1,
locSearchEndDateTimeError2,
locSearchDateRangeError
),
"Error",
"None"
)
Width: =300
X: =40
Y: =30
- lblSearchEndDateErrorMessage:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
AlignInContainer: =AlignInContainer.Stretch
FillPortions: =3
FontColor: =gblThemeColorRed
Height: =30
LayoutMinHeight: =0
PaddingLeft: =10
Size: =13
Text: |-
=If(
locSearchEndDateTimeError1,
"本日以降の日付を選択してください",
locSearchEndDateTimeError2,
"検索開始日以降の日付を選択してください",
locSearchDateRangeError,
"検索期間は30日以内で指定してください。検索開始日と終了日の差が大きすぎます",
""
)
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =560
X: =40
Y: =70
- ctnSearchTimeframe:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =5
LayoutDirection: =LayoutDirection.Vertical
LayoutMinHeight: =0
PaddingLeft: =40
Children:
- lblSearchTimeframeTitle:
Control: Text@0.0.51
Properties:
AlignInContainer: =AlignInContainer.Stretch
FillPortions: =3
Height: =Parent.Height
LayoutMinHeight: =0
Text: ="検索時間帯"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =122
X: =40
Y: =5
- ctnSelectTimeframe:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =4
LayoutDirection: =LayoutDirection.Horizontal
LayoutMinHeight: =0
Children:
- cmbSelectStartHour:
Control: ComboBox@0.0.51
Properties:
AccessibleLabel: ="検索時間帯選択:開始時間(時間)"
DefaultSelectedItems: |-
=If(
IsEmpty(colSearchSettings),
[8],
[Last(colSearchSettings).SearchTimeframeStartHour]
)
DisplayMode: |-
=If(
ctnSearchAvailabilityPopupBackground.Visible,
DisplayMode.Disabled,
DisplayMode.Edit
)
Height: =Parent.Height
InputTextPlaceholder: =""
IsSearchable: =false
Items: =Sequence(24,0,1)
ValidationState: |-
=If(
locSearchTimeframeError,
"Error",
"None"
)
Width: =80
X: =40
Y: =35
- lblTimeframeStartHour:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
FontColor: |-
=If(
ctnSearchAvailabilityPopupBackground.Visible,
RGBA(
150,
150,
150,
1
)
)
Height: =Parent.Height
Text: ="時"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =30
X: =80
Y: =35
- cmbSelectStartMinute:
Control: ComboBox@0.0.51
Properties:
AccessibleLabel: ="検索時間帯選択:開始時間(分)"
DefaultSelectedItems: |-
=If(
IsEmpty(colSearchSettings),
["00"],
[Last(colSearchSettings).SearchTimeframeStartMinute]
)
DisplayMode: |-
=If(
ctnSearchAvailabilityPopupBackground.Visible,
DisplayMode.Disabled,
DisplayMode.Edit
)
Height: =Parent.Height
InputTextPlaceholder: =""
IsSearchable: =false
Items: |-
=RenameColumns(
gblSearchTimeframeMinutes.DisplayValue,
DisplayValue,
Value
)
ValidationState: |-
=If(
locSearchTimeframeError,
"Error",
"None"
)
Width: =80
X: =110
Y: =35
- lblTimeframeStartMinute:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
FontColor: |-
=If(
ctnSearchAvailabilityPopupBackground.Visible,
RGBA(
150,
150,
150,
1
)
)
Height: =Parent.Height
Text: ="分"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =30
X: =190
Y: =35
- lblTimeframe:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
FontColor: |-
=If(
ctnSearchAvailabilityPopupBackground.Visible,
RGBA(
150,
150,
150,
1
)
)
Height: =Parent.Height
Text: ="~"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =50
X: =220
Y: =35
- cmbSelectEndHour:
Control: ComboBox@0.0.51
Properties:
AccessibleLabel: ="検索時間帯選択:終了時間(時間)"
DefaultSelectedItems: |-
=If(
IsEmpty(colSearchSettings),
[19],
[Last(colSearchSettings).SearchTimeframeEndHour]
)
DisplayMode: |-
=If(
ctnSearchAvailabilityPopupBackground.Visible,
DisplayMode.Disabled,
DisplayMode.Edit
)
Height: =Parent.Height
InputTextPlaceholder: =""
IsSearchable: =false
Items: =Sequence(24,0,1)
ValidationState: |-
=If(
locSearchTimeframeError,
"Error",
"None"
)
Width: =80
X: =270
Y: =35
- lblTimeframeEndHour:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
FontColor: |-
=If(
ctnSearchAvailabilityPopupBackground.Visible,
RGBA(
150,
150,
150,
1
)
)
Height: =Parent.Height
Text: ="時"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =30
X: =350
Y: =35
- cmbSelectEndMinute:
Control: ComboBox@0.0.51
Properties:
AccessibleLabel: ="検索時間帯選択:終了時間(分)"
DefaultSelectedItems: |-
=If(
IsEmpty(colSearchSettings),
["00"],
[Last(colSearchSettings).SearchTimeframeEndMinute]
)
DisplayMode: |-
=If(
ctnSearchAvailabilityPopupBackground.Visible,
DisplayMode.Disabled,
DisplayMode.Edit
)
Height: =Parent.Height
InputTextPlaceholder: =""
IsSearchable: =false
Items: |-
=RenameColumns(
gblSearchTimeframeMinutes.DisplayValue,
DisplayValue,
Value
)
ValidationState: |-
=If(
locSearchTimeframeError,
"Error",
"None"
)
Width: =80
X: =380
Y: =35
- lblTimeframeEndMinute:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
FontColor: |-
=If(
ctnSearchAvailabilityPopupBackground.Visible,
RGBA(
150,
150,
150,
1
)
)
Height: =Parent.Height
Text: ="分"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =30
X: =460
Y: =35
- ctnActivityDomainSettings:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =4
LayoutDirection: =LayoutDirection.Horizontal
LayoutMinHeight: =0
LayoutMinWidth: =0
Children:
- chkActivityDomainSettings:
Control: CheckBox@0.0.30
Properties:
AccessibleLabel: ="各出席者の稼働時間内に絞るチェックボックス"
AlignInContainer: =AlignInContainer.Stretch
Checked: |-
=If(
IsEmpty(colSearchSettings),
false,
Last(colSearchSettings).ActivityDomainSettings
)
FillPortions: =1
FontSize: =15
Label: ="各出席者の稼働時間内に絞る*"
LayoutMinHeight: =0
- htmActivityDomainDetailsLink:
Control: HtmlViewer@2.1.0
Properties:
AlignInContainer: =AlignInContainer.Center
AutoHeight: =true
DisabledBorderColor: =RGBA(161, 159, 157, 1)
FillPortions: =1
Font: =Font.'Segoe UI'
Height: =30
HtmlText: |-
="<font color='" & If(
chkActivityDomainSettings.Checked,
"#323232",
"#646464"
) & "'>
*詳しくは
</font>
<a href='https://power365medium.com/usage-original-scheduling-app/#activity-domain-settings' style='text-decoration: underline #0066c0' target='_blank'>
<font color='#0066c0'>
こちら
</font>
</a>"
LayoutMinHeight: =0
LayoutMinWidth: =0
Size: =11
Width: =0
X: =532
Y: =577
- lblTimeframeErrorMessage:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
AlignInContainer: =AlignInContainer.Stretch
FillPortions: =3
FontColor: =gblThemeColorRed
Height: =Parent.Height
LayoutMinHeight: =0
PaddingLeft: =10
Size: =13
Text: |-
=If(
locSearchTimeframeError,
"検索時間帯の範囲を正しく設定してください"
)
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =560
X: =40
Y: =63
- ctnSearchMeetingDuration:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =3
LayoutDirection: =LayoutDirection.Vertical
LayoutMinHeight: =0
PaddingLeft: =40
Children:
- lblMeetingDurationTitle:
Control: Text@0.0.51
Properties:
AlignInContainer: =AlignInContainer.Stretch
FillPortions: =3
Height: =Parent.Height
LayoutMinHeight: =0
Text: ="会議の長さ (分)"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =122
X: =40
Y: =5
- ctnMeetingDuration:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =4
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Horizontal
LayoutGap: =1
LayoutMinHeight: =0
PaddingLeft: =1
Children:
- numInputMeetingDuration:
Control: Classic/TextInput@2.3.2
Properties:
AccessibleLabel: ="会議の長さ選択(分)"
BorderColor: |-
=If(
locMeetingDurationError,
RGBA(
205,
60,
55,
1
),
Self.Fill
)
BorderThickness: =1
Default: |-
=If(
IsEmpty(colSearchSettings),
30,
Last(colSearchSettings).MeetingDuration
)
DisabledBorderColor: =RGBA(230, 230, 230, 1)
DisabledColor: =RGBA(200, 200, 200, 1)
DisabledFill: =RGBA(255, 255, 255, 1)
DisplayMode: |-
=If(
ctnSearchAvailabilityPopupBackground.Visible,
DisplayMode.Disabled,
DisplayMode.Edit
)
Fill: =RGBA(245, 245, 245, 1)
FocusedBorderColor: =gblThemeColorBlue
FocusedBorderThickness: =1
Font: =Font.'Open Sans'
Format: =TextFormat.Number
Height: =Parent.Height - 1
HintText: =
HoverBorderColor: =gblThemeColorBlue
HoverColor: =Self.Color
HoverFill: =Self.Fill
PaddingBottom: =0
PaddingRight: =0
PaddingTop: =0
PressedBorderColor: =gblThemeColorBlue
Size: =10
TabIndex: =gblTabFocusable
Width: =100
- lblMeetingDurationMinute:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
Height: =Parent.Height
Text: ="分"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =20
X: =106
Y: =35
- lblMeetingDurationErrorMessage:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
AlignInContainer: =AlignInContainer.Stretch
FillPortions: =3
FontColor: =gblThemeColorRed
Height: =Parent.Height
LayoutMinHeight: =0
PaddingLeft: =10
Size: =13
Text: |-
=If(
locMeetingDurationError,
"1分以上1440分未満の値を設定してください",
""
)
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =560
X: =40
Y: =70
- ctnSearchAvailabilityButtonArea:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
LayoutDirection: =LayoutDirection.Horizontal
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
LayoutMinWidth: =0
PaddingTop: =10
Children:
- ctnSearchAvailabilityButton:
Control: GroupContainer@1.3.0
Variant: ManualLayout
Properties:
AlignInContainer: =AlignInContainer.SetByContainer
FillPortions: =0
Height: =44
LayoutMinWidth: =0
RadiusBottomLeft: =22
RadiusBottomRight: =22
RadiusTopLeft: =Self.Height / 2
RadiusTopRight: =22
Width: =150
X: =596
Y: =10
Children:
- btnSearchAvailability:
Control: Classic/Button@2.2.0
Properties:
BorderColor: =RGBA(0, 0, 0, 0)
BorderThickness: =0
Color: =RGBA(255, 255, 255, 1)
DisabledBorderColor: =RGBA(0, 0, 0, 0)
DisabledColor: =RGBA(161, 159, 157, 1)
DisabledFill: =RGBA(242, 242, 241, 0)
DisplayMode: |-
=If(
IsEmpty(colAttendees),
DisplayMode.Disabled,
DisplayMode.Edit
)
Fill: =gblThemeColorBlue
FocusedBorderColor: =ColorFade(Self.Fill, -0.5)
Font: =Font.'Segoe UI'
Height: =44
HoverBorderColor: =RGBA(0, 0, 0, 0)
HoverColor: =RGBA(255, 255, 255, 1)
HoverFill: =RGBA(16, 110, 190, 1)
OnSelect: |-
=// © 2025 Hiromaru. This work is licensed under CC BY-NC 4.0.
With(
{
scpCurrentDateTimeJST: DateAdd(
DateAdd(
Now(),
TimeZoneOffset(),
TimeUnit.Minutes
),
9,
TimeUnit.Hours
)
},
UpdateContext(
{
locTotalInitialTasksCount: 1,
locCompletedInitialTasksCount: 0,
locTotalLoopTasksCount: DateDiff(
dtpSearchStartDateTime.SelectedDate,
dtpSearchEndDateTime.SelectedDate,
TimeUnit.Days
) + 1,
locTotalSummaryTasksCount: (DateDiff(
dtpSearchStartDateTime.SelectedDate,
dtpSearchEndDateTime.SelectedDate,
TimeUnit.Days
) + 1) * 0.1,
locCompletedSummaryTasksCount: 0,
locSearchStartDateTimeError: Or(
IsBlank(dtpSearchStartDateTime.SelectedDate),
dtpSearchStartDateTime.SelectedDate < Today()
),
locSearchEndDateTimeError1: dtpSearchEndDateTime.SelectedDate < Today(),
locSearchEndDateTimeError2: Or(
IsBlank(dtpSearchEndDateTime.SelectedDate),
dtpSearchEndDateTime.SelectedDate < dtpSearchStartDateTime.SelectedDate
),
locSearchDateRangeError: DateDiff(
dtpSearchStartDateTime.SelectedDate,
dtpSearchEndDateTime.SelectedDate,
TimeUnit.Days
) > 30,
locSearchTimeframeError: Or(
IsBlank(cmbSelectStartHour.Selected.Value),
IsBlank(cmbSelectStartMinute.Selected.Value),
IsBlank(cmbSelectEndHour.Selected.Value),
IsBlank(cmbSelectEndMinute.Selected.Value),
cmbSelectEndHour.Selected.Value < cmbSelectStartHour.Selected.Value,
And(
cmbSelectStartHour.Selected.Value = cmbSelectEndHour.Selected.Value,
LookUp(
gblSearchTimeframeMinutes,
DisplayValue = cmbSelectStartMinute.Selected.Value,
Value
) >= LookUp(
gblSearchTimeframeMinutes,
DisplayValue = cmbSelectEndMinute.Selected.Value,
Value
)
)
),
locMeetingDurationError: Or(
IsBlank(numInputMeetingDuration.Text),
Value(numInputMeetingDuration.Text) <= 0,
Value(numInputMeetingDuration.Text) > 1440
)
}
);
UpdateContext({locTotalTasksCount: locTotalInitialTasksCount + (locTotalLoopTasksCount - 1) + locTotalSummaryTasksCount});
If(
Not(
Or(
locSearchStartDateTimeError,
locSearchEndDateTimeError1,
locSearchEndDateTimeError2,
locSearchDateRangeError,
locSearchTimeframeError,
locMeetingDurationError
)
),
UpdateContext(
{
locIsSearchingAvailability: true,
locCompletedInitialTasksCount: locTotalInitialTasksCount
}
);
Concurrent(
Concurrent(
If(
IsError(
SaveData(
colAttendees,
"colAttendeesCache"
)
),
false
),
ClearCollect(
colSearchSettings,
{
SearchTimeframeStartHour: cmbSelectStartHour.Selected.Value,
SearchTimeframeStartMinute: cmbSelectStartMinute.Selected.Value,
SearchTimeframeEndHour: cmbSelectEndHour.Selected.Value,
SearchTimeframeEndMinute: cmbSelectEndMinute.Selected.Value,
ActivityDomainSettings: chkActivityDomainSettings.Checked,
MeetingDuration: Value(numInputMeetingDuration.Text)
}
);
If(
IsError(
SaveData(
colSearchSettings,
"colSearchSettingsCache"
)
),
false
)
),
ForAll(
Sequence(
DateDiff(
dtpSearchStartDateTime.SelectedDate,
dtpSearchEndDateTime.SelectedDate,
TimeUnit.Days
) + 1,
0,
1
),
Collect(
colSuggestedMeetingTimes,
Office365Outlook.FindMeetingTimesV2(
{
RequiredAttendees: Concat(
Filter(
colAttendees,
Or(
AttendeeType = "user",
AttendeeType = "resource"
),
Required
),
Mail,
";"
),
OptionalAttendees: Concat(
Filter(
colAttendees,
Or(
AttendeeType = "user",
AttendeeType = "resource"
),
Not(Required)
),
Mail,
";"
),
ResourceAttendees: Concat(
Filter(
colAttendees,
AttendeeType = "place"
),
Mail,
";"
),
MeetingDuration: Value(numInputMeetingDuration.Text),
Start: Text(
DateAdd(
DateAdd(
DateAdd(
dtpSearchStartDateTime.SelectedDate,
Value,
TimeUnit.Days
),
cmbSelectStartHour.Selected.Value - 9,
TimeUnit.Hours
),
LookUp(
gblSearchTimeframeMinutes,
DisplayValue = cmbSelectStartMinute.Selected.Value,
Value
),
TimeUnit.Minutes
),
"yyyy-mm-ddThh:mm:ssZ"
),
End: Text(
DateAdd(
DateAdd(
DateAdd(
dtpSearchStartDateTime.SelectedDate,
Value,
TimeUnit.Days
),
cmbSelectEndHour.Selected.Value - 9,
TimeUnit.Hours
),
LookUp(
gblSearchTimeframeMinutes,
DisplayValue = cmbSelectEndMinute.Selected.Value,
Value
),
TimeUnit.Minutes
),
"yyyy-mm-ddThh:mm:ssZ"
),
MinimumAttendeePercentage: RoundDown(
Max(
CountRows(
Filter(
colAttendees,
Required
)
),
1
) / (CountRows(
Filter(
colAttendees,
Required
)
) + CountRows(
Filter(
colAttendees,
Not(Required)
)
)) * 100,
0
),
IsOrganizerOptional: If(
IsEmpty(
Filter(
colAttendees,
Not(Mail = User().Email)
)
),
false,
Not(
User().Email in Filter(
colAttendees,
Required
).Mail
)
),
ActivityDomain: If(
chkActivityDomainSettings.Checked,
"Work",
"Unrestricted"
),
MaxCandidates: 50
}
)
);
Collect(
colSearchCompletedDate,
ThisRecord.Value
)
);
ClearCollect(
colSummarizedMeetingTimes,
Filter(
DropColumns(
AddColumns(
DropColumns(
Filter(
AddColumns(
Ungroup(
colSuggestedMeetingTimes,
meetingTimeSuggestions
),
startDateTime,
DateAdd(
ThisRecord.meetingTimeSlot.start.dateTime,
9,
TimeUnit.Hours
),
endDateTime,
DateAdd(
ThisRecord.meetingTimeSlot.end.dateTime,
9,
TimeUnit.Hours
),
attendeeAvailabilityList,
Collect(
AddColumns(
ThisRecord.attendeeAvailability,
email,
attendee.emailAddress.address
),
If(
User().Email in colAttendees.Mail,
{
availability: ThisRecord.organizerAvailability,
email: User().Email
}
)
)
) As parentRecord,
CountRows(
Filter(
Filter(
colAttendees,
Required
) As childRecord,
childRecord.Mail in Filter(
parentRecord.attendeeAvailabilityList,
availability = "free"
).email
)
) >= CountRows(
Filter(
colAttendees,
Required
).Mail
)
),
attendeeAvailability
),
placeAvailable,
Not(
IsEmpty(
Filter(
Filter(
attendeeAvailabilityList,
availability = "free"
) As availabilityList,
Not(
IsBlank(
LookUp(
colAttendees,
And(
Mail = availabilityList.email,
AttendeeType = "place"
)
)
)
)
)
)
),
freeAttendeesCount,
CountRows(
Filter(
attendeeAvailabilityList,
availability in ShowColumns(
Filter(
gblFreeBusyStatusCategory,
Category = "空き時間"
),
EnglishStatus
)
)
),
busyAttendeesCount,
CountRows(
Filter(
attendeeAvailabilityList,
availability in ShowColumns(
Filter(
gblFreeBusyStatusCategory,
Category = "予定あり"
),
EnglishStatus
)
)
),
otherAttendeesCount,
CountRows(
Filter(
attendeeAvailabilityList,
availability in ShowColumns(
Filter(
gblFreeBusyStatusCategory,
Category = "その他"
),
EnglishStatus
)
)
)
),
confidence,
emptySuggestionsReason,
locations,
meetingTimeSlot,
organizerAvailability,
suggestionReason
),
endDateTime >= DateAdd(
DateAdd(
Now(),
TimeZoneOffset(),
TimeUnit.Minutes
),
9,
TimeUnit.Hours
)
)
);
Clear(colSuggestedMeetingTimes);
UpdateContext({locCompletedSummaryTasksCount: locTotalSummaryTasksCount})
);
UpdateContext({locIsSearchingAvailability: false});
If(
IsEmpty(colSummarizedMeetingTimes),
UpdateContext({locSuggestedDateTimeNotFound: true}),
Navigate(
SelectMeetingTimeScreen,
ScreenTransition.None
)
);
Clear(colSearchCompletedDate)
)
)
PressedBorderColor: =RGBA(0, 69, 120, 1)
PressedColor: =RGBA(255, 255, 255, 1)
PressedFill: =RGBA(16, 110, 190, 1)
RadiusBottomLeft: =25
RadiusBottomRight: =25
RadiusTopLeft: =25
RadiusTopRight: =25
Size: =12
TabIndex: |-
=If(
ctnSearchAvailabilityPopupBackground.Visible,
gblTabNonFocusable,
gblTabFocusable
)
Text: ="日程検索"
Width: =Parent.Width
- ctnSearchAvailabilityPopupBackground:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
Fill: =RGBA(80, 80, 80, 0.3)
Height: =Parent.Height
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Vertical
LayoutJustifyContent: =LayoutJustifyContent.Center
Visible: |-
=Or(
locIsSearchingAvailability,
locSuggestedDateTimeNotFound
)
Width: =Parent.Width
Children:
- ctnSearchAvailabilityPopup:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
AlignInContainer: =AlignInContainer.SetByContainer
DropShadow: =DropShadow.Semilight
Fill: =RGBA(255, 255, 255, 1)
FillPortions: =0
Height: =Parent.Height * 0.2
LayoutDirection: =LayoutDirection.Vertical
LayoutJustifyContent: =LayoutJustifyContent.Center
PaddingBottom: =20
PaddingLeft: =20
PaddingRight: =20
PaddingTop: =20
Width: =480
Children:
- lblRetrySearchMessage:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
AlignInContainer: =AlignInContainer.Stretch
FillPortions: =2
Height: =74
LayoutMinHeight: =0
Size: =16
Text: |-
="条件に合う日程が見つかりませんでした。
検索日時設定を変更して再度お試しください。"
VerticalAlign: =VerticalAlign.Middle
Visible: =locSuggestedDateTimeNotFound
Width: =
X: =282
Y: =273
- ctnRetrySearchMessageOK:
Control: GroupContainer@1.3.0
Variant: ManualLayout
Properties:
AlignInContainer: =AlignInContainer.Center
LayoutMinHeight: =0
LayoutMinWidth: =0
RadiusBottomLeft: =Self.Width / 2
RadiusBottomRight: =Self.Width / 2
RadiusTopLeft: =Self.Width / 2
RadiusTopRight: =Self.Width / 2
Visible: =locSuggestedDateTimeNotFound
Width: =100
Children:
- btnRetrySearchMessageOK:
Control: Button@0.0.45
Properties:
AccessibleLabel: ="日程検索のローディング画面を閉じるボタン"
BorderRadius: =Self.Height / 2
Height: =Parent.Height
OnSelect: |-
=UpdateContext({locSuggestedDateTimeNotFound: false})
Text: ="OK"
Width: =Parent.Width
- lblSearchingProgress:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
AlignInContainer: =AlignInContainer.Stretch
Height: =50
LayoutMinHeight: =0
LayoutMinWidth: =0
Size: =16
Text: |-
="日程検索中...
" & pbarSearchingProgress.Value & "%"
VerticalAlign: =VerticalAlign.Middle
Visible: =locIsSearchingAvailability
Weight: ='TextCanvas.Weight'.Semibold
Width: =
X: =282
Y: =273
- pbarSearchingProgress:
Control: Progress@1.1.34
Properties:
AccessibleLabel: ="日程検索の進捗バー"
AlignInContainer: =AlignInContainer.Stretch
Height: =40
LayoutMinHeight: =0
LayoutMinWidth: =0
Thickness: ='Progress.Thickness'.Large
Value: |-
=If(
IsError((locCompletedInitialTasksCount + CountRows(colSearchCompletedDate) + locCompletedSummaryTasksCount) / locTotalTasksCount) * 100,
0,
Min(
Int(((locCompletedInitialTasksCount + CountRows(colSearchCompletedDate) + locCompletedSummaryTasksCount) / locTotalTasksCount) * 100),
100
)
)
Visible: =locIsSearchingAvailability
Width: =
開発画面に戻り、Screen1に移動します。
Screen1の画面上で右クリックして「貼り付け」を選択します。
しばらく待つと、日程検索画面が作成されたことが分かります。

日程選択画面のコピー&貼り付け
日程選択画面のコードも同様の手順でコピーしてください。
- 下記「▶日程選択画面のコードを開く」を選択し、日程選択画面のコードを表示
- 右上の青いコピーボタンを選択
- 再度「▼日程選択画面のコードを開く」を選択し、日程選択画面のコードを非表示にする
Screens:
SelectMeetingTimeScreen:
Properties:
LoadingSpinnerColor: =RGBA(56, 96, 178, 1)
OnVisible: |-
=Set(
gblProgressBarItems,
Table(
{
stepNumber: "1",
itemLabel: "日程検索画面",
isCurrentStep: false,
isCompleted: true
},
{
stepNumber: "2",
itemLabel: "日程選択画面",
isCurrentStep: true,
isCompleted: false
},
{
stepNumber: "3",
itemLabel: "予定作成画面",
isCurrentStep: false,
isCompleted: false
}
)
)
Children:
- ctnSelectMeetingTimeScreenArea:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
Height: =Parent.Height
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Vertical
LayoutGap: =10
LayoutJustifyContent: =LayoutJustifyContent.Center
PaddingBottom: =10
PaddingLeft: =10
PaddingRight: =10
PaddingTop: =10
Width: =Parent.Width
Children:
- ctnAppTitle2:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
Fill: =gblThemeColorBlue
FillPortions: =2
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Horizontal
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
LayoutMinWidth: =0
Children:
- ctnAppTitleLeft2:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Horizontal
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
LayoutMinWidth: =0
Children:
- ctnBack2:
Control: GroupContainer@1.3.0
Variant: ManualLayout
Properties:
AlignInContainer: =AlignInContainer.Center
BorderColor: =RGBA(255, 255, 255, 1)
DropShadow: =DropShadow.None
Fill: =gblThemeColorBlue
FillPortions: =0
Height: =Parent.Height * 0.5
LayoutMinHeight: =0
LayoutMinWidth: =0
RadiusBottomLeft: =(Self.Width + Self.BorderThickness) / 2
RadiusBottomRight: =(Self.Width + Self.BorderThickness) / 2
RadiusTopLeft: =(Self.Width + Self.BorderThickness) / 2
RadiusTopRight: =(Self.Width + Self.BorderThickness) / 2
Width: =Self.Height
Children:
- btnBack2:
Control: Button@0.0.45
Properties:
AcceptsFocus: =Not(ctnAttendeeAvailabilityPopupBackground.Visible)
AccessibleLabel: ="前の画面に戻るボタン"
Appearance: ='ButtonCanvas.Appearance'.Transparent
BorderColor: =RGBA(255, 255, 255, 1)
BorderRadius: =Self.Width / 2
BorderThickness: =2
FontColor: =RGBA(255, 255, 255, 1)
FontSize: =Parent.Width * 0.75
FontWeight: =FontWeight.Normal
Height: =Parent.Width
Icon: ="ChevronLeft"
IconStyle: ='ButtonCanvas.IconStyle'.Filled
Layout: ='ButtonCanvas.Layout'.IconOnly
OnSelect: |
=Back();
Set(
gblSelectedSuggestionAvailabilityTable,
Blank()
);
Set(
gblSelectedSuggestionDateTimeRecord,
Blank()
);
Text: =
Width: =Parent.Width
- ctnAppTitleCenter2:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =8
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Horizontal
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
LayoutMinWidth: =0
Children:
- icoAppTitleCalendar2:
Control: Icon@0.0.7
Properties:
Height: =Self.Width
Icon: ="Calendar"
IconColor: =RGBA(255, 255, 255, 1)
TabIndex: =gblTabNonFocusable
Width: =Parent.Height * 0.6
X: =34
Y: =4
- lblAppTitle2:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
FontColor: =RGBA(255, 255, 255, 1)
Height: =Parent.Height
Size: =24
Text: ="日程調整アプリ"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =200
X: =85
- ctnAppTitleRight2:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Vertical
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
LayoutMinWidth: =0
PaddingTop: =8
Children:
- ctnHowToUse2:
Control: GroupContainer@1.3.0
Variant: ManualLayout
Properties:
AlignInContainer: =AlignInContainer.Center
BorderColor: =RGBA(255, 255, 255, 1)
DropShadow: =DropShadow.Bold
Fill: =RGBA(255, 255, 255, 1)
FillPortions: =3
LayoutMinHeight: =0
LayoutMinWidth: =0
RadiusBottomLeft: =Self.Width / 2
RadiusBottomRight: =Self.Width / 2
RadiusTopLeft: =Self.Width / 2
RadiusTopRight: =Self.Width / 2
Width: =Self.Height
Children:
- btnHowToUse2:
Control: Button@0.0.45
Properties:
AcceptsFocus: =Not(ctnAttendeeAvailabilityPopupBackground.Visible)
AccessibleLabel: ="使い方ページへの遷移ボタン"
Appearance: ='ButtonCanvas.Appearance'.Transparent
BorderColor: =RGBA(255, 255, 255, 1)
BorderRadius: =Self.Width / 2
BorderThickness: =0
FontColor: =gblThemeColorBlue
FontSize: =Parent.Width * 0.75
FontWeight: =FontWeight.Normal
Height: =Parent.Width
Icon: ="Question"
IconStyle: ='ButtonCanvas.IconStyle'.Filled
Layout: ='ButtonCanvas.Layout'.IconOnly
OnSelect: =Launch("https://power365medium.com/usage-original-scheduling-app#select-meetingtime-screen")
Text: =
Width: =Parent.Width
- btnHowToUseLabel2:
Control: Button@0.0.45
Properties:
AcceptsFocus: =false
AccessibleLabel: ="使い方ページへの遷移ラベル"
Appearance: ='ButtonCanvas.Appearance'.Transparent
BorderColor: =RGBA(255, 255, 255, 1)
BorderRadius: =Self.Width / 2
BorderThickness: =0
FillPortions: =2
FontColor: =RGBA(255, 255, 255, 1)
FontSize: =16
FontWeight: =FontWeight.Semibold
Height: =0
IconStyle: ='ButtonCanvas.IconStyle'.Filled
Layout: ='ButtonCanvas.Layout'.TextOnly
LayoutMinHeight: =0
OnSelect: =Select(btnHowToUse2)
Text: ="使い方"
Width: =Parent.Width
- ctnProgressBarArea2:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =2
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Vertical
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
LayoutMinWidth: =0
Children:
- ctnProgressBar2:
Control: GroupContainer@1.3.0
Variant: ManualLayout
Properties:
AlignInContainer: =AlignInContainer.Center
DropShadow: =DropShadow.None
EnableChildFocus: =false
LayoutMinHeight: =0
Width: =800
Children:
- shpProgressBarGray2:
Control: Rectangle@2.3.0
Properties:
AccessibleLabel: ="進捗を表す灰色のバー"
BorderColor: =RGBA(0, 18, 107, 1)
Fill: =RGBA(200, 200, 200, 1)
Height: =3
TabIndex: =gblTabNonFocusable
Width: =Parent.Width * 2 / 3
X: =Parent.Width / 6
Y: =(Parent.Height / 4) - (Self.Height / 2)
- shpProgressBarBlue2:
Control: Rectangle@2.3.0
Properties:
AccessibleLabel: ="進捗を表す青いバー"
BorderColor: =RGBA(0, 18, 107, 1)
Fill: =gblThemeColorBlue
Height: =3
TabIndex: =gblTabNonFocusable
Width: =Parent.Width / 3
X: =Parent.Width / 6
Y: =(Parent.Height / 4) - (Self.Height / 2)
- galProgressBar2:
Control: Gallery@2.15.0
Variant: BrowseLayout_Horizontal_TwoTextOneImageVariant_ver5.0
Properties:
AccessibleLabel: ="日程検索から予定作成までのステップバー"
BorderColor: =RGBA(0, 18, 107, 1)
DelayItemLoading: =false
FocusedBorderThickness: =2
Height: =61
ItemAccessibleLabel: ="日程検索から予定作成までのステップ"
Items: =gblProgressBarItems
LoadingSpinnerColor: =gblThemeColorBlue
Selectable: =false
TabIndex: =gblTabNonFocusable
TemplateSize: =Self.Width / 3
Width: =Parent.Width
Children:
- ctnProgressStep2:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
EnableChildFocus: =false
Height: =61
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Vertical
LayoutJustifyContent: =LayoutJustifyContent.Center
Width: =Parent.TemplateWidth
Children:
- ctnProgressStepBadge2:
Control: GroupContainer@1.3.0
Variant: ManualLayout
Properties:
AlignInContainer: =AlignInContainer.Center
BorderColor: =gblThemeColorBlue
DropShadow: |-
=If(
ThisItem.isCurrentStep,
DropShadow.Regular,
DropShadow.None
)
EnableChildFocus: =false
Fill: =RGBA(255, 255, 255, 1)
Height: =21
LayoutMinHeight: =0
LayoutMinWidth: =0
RadiusBottomLeft: =Self.Height / 2
RadiusBottomRight: =Self.Height / 2
RadiusTopLeft: =Self.Height / 2
RadiusTopRight: =Self.Height / 2
Width: =Self.Height
Children:
- lblProgressStep2:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
BorderColor: |-
=If(
ThisItem.isCurrentStep,
gblThemeColorBlue,
gblThemeColorGray
)
BorderRadius: =Self.Height / 2
BorderStyle: =BorderStyle.Solid
BorderThickness: =2
Fill: |-
=If(
ThisItem.isCurrentStep,
RGBA(
255,
255,
255,
1
),
RGBA(
200,
200,
200,
1
)
)
FontColor: |-
=If(
ThisItem.isCurrentStep,
gblThemeColorBlue,
Color.White
)
Height: =Self.Width
Size: =18
Text: =ThisItem.stepNumber
VerticalAlign: =VerticalAlign.Middle
Visible: =Not(ThisItem.isCompleted)
Weight: ='TextCanvas.Weight'.Semibold
Width: =Parent.Width
X: =(Parent.Width - Self.Width) / 2
Y: =(Parent.Height - Self.Height) / 2
- icoProgressStep2:
Control: Icon@0.0.7
Properties:
Height: =Parent.Height
Icon: ="CheckmarkCircle"
IconColor: =gblThemeColorBlue
IconStyle: ='Icon.IconStyle'.Filled
TabIndex: =gblTabNonFocusable
Visible: =ThisItem.isCompleted
Width: =Parent.Width
X: =(Parent.Width - Self.Width) / 2
Y: =(Parent.Height - Self.Height) / 2
- lblProgressStepTitle2:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
BorderRadius: =Self.Height / 2
FillPortions: =1
FontColor: |-
=If(
ThisItem.isCompleted,
gblThemeColorGray,
ThisItem.isCurrentStep,
gblThemeColorBlue,
gblThemeColorGray
)
Height: =Parent.Height
LayoutMinHeight: =0
Size: =18
Text: =ThisItem.itemLabel
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Medium
Width: =Parent.Width
- ctnReviewSearchSettingsArea:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
FillPortions: =5
LayoutDirection: =LayoutDirection.Vertical
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
LayoutMinWidth: =0
PaddingTop: =10
Children:
- lblReviewSearchSettings:
Control: Text@0.0.51
Properties:
AlignInContainer: =AlignInContainer.Stretch
PaddingLeft: =30
Size: =18
Text: ="日程検索条件"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =
- ctnReviewSearchSettings:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Horizontal
LayoutGap: =10
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
LayoutMinWidth: =0
PaddingBottom: =2
PaddingLeft: =20
PaddingRight: =2
PaddingTop: =2
Width: =
Children:
- ctnReviewSearchStartDate:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =2
LayoutDirection: =LayoutDirection.Vertical
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
LayoutMinWidth: =0
PaddingLeft: =40
Children:
- lblReviewSearchStartDate:
Control: Text@0.0.51
Properties:
AlignInContainer: =AlignInContainer.Stretch
FillPortions: =1
Height: =30
LayoutMinHeight: =0
Text: ="検索開始日"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Medium
Width: =200
X: =40
Y: =5
- dtpReviewSearchStartDate:
Control: DatePicker@0.0.46
Properties:
AccessibleLabel: ="検索開始日の確認"
DisplayMode: =DisplayMode.View
FillPortions: =1
Height: =40
LayoutMinHeight: =0
OnChange: =
Placeholder: ="日付の選択"
SelectedDate: =dtpSearchStartDateTime.SelectedDate
Width: =240
X: =40
Y: =30
- shpReviewSearchStartDate:
Control: Rectangle@2.3.0
Properties:
AccessibleLabel: ="レイアウト調整用"
AlignInContainer: =AlignInContainer.Stretch
BorderColor: =RGBA(0, 18, 107, 1)
Fill: =Color.Transparent
FillPortions: =1
LayoutMinHeight: =0
TabIndex: =gblTabNonFocusable
- ctnReviewSearchEndDate:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =2
LayoutDirection: =LayoutDirection.Vertical
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
LayoutMinWidth: =0
PaddingLeft: =40
Children:
- lblReviewSearchEndDate:
Control: Text@0.0.51
Properties:
AlignInContainer: =AlignInContainer.Stretch
FillPortions: =1
Height: =30
LayoutMinHeight: =0
Text: ="検索終了日"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Medium
Width: =200
X: =40
Y: =5
- dtpReviewSearchEndDate:
Control: DatePicker@0.0.46
Properties:
AccessibleLabel: ="検索終了日の確認"
DisplayMode: =DisplayMode.View
FillPortions: =1
Height: =40
LayoutMinHeight: =0
Placeholder: ="日付の選択"
SelectedDate: =dtpSearchEndDateTime.SelectedDate
Width: =240
X: =40
Y: =25
- shpReviewSearchEndDate:
Control: Rectangle@2.3.0
Properties:
AccessibleLabel: ="レイアウト調整用"
AlignInContainer: =AlignInContainer.Stretch
BorderColor: =RGBA(0, 18, 107, 1)
Fill: =Color.Transparent
FillPortions: =1
LayoutMinHeight: =0
TabIndex: =gblTabNonFocusable
- ctnReviewSearchTimeframeArea:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =3
LayoutDirection: =LayoutDirection.Vertical
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
LayoutMinWidth: =0
PaddingLeft: =30
Children:
- lblReviewSearchTimeframeTitle:
Control: Text@0.0.51
Properties:
AlignInContainer: =AlignInContainer.Stretch
FillPortions: =1
Height: =Parent.Height
LayoutMinHeight: =0
Text: ="検索時間帯"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Medium
Width: =122
X: =30
Y: =5
- ctnReviewSearchTimeframe:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
Height: =40
LayoutDirection: =LayoutDirection.Horizontal
LayoutMinHeight: =0
LayoutMinWidth: =0
Children:
- cmbReviewSelectStartHour:
Control: ComboBox@0.0.51
Properties:
AccessibleLabel: ="検索時間帯の確認:開始時間(時間)"
DefaultSelectedItems: =cmbSelectStartHour.SelectedItems
DisplayMode: =DisplayMode.View
Height: =Parent.Height
InputTextPlaceholder: =""
IsSearchable: =false
Items: =Sequence(24,0,1)
Width: =60
X: =40
Y: =35
- lblReviewTimeframeStartHour:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
Height: =Parent.Height
Text: ="時"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =30
X: =80
Y: =35
- cmbReviewSelectStartMinute:
Control: ComboBox@0.0.51
Properties:
AccessibleLabel: ="検索時間帯の確認:開始時間(分)"
DefaultSelectedItems: =cmbSelectStartMinute.SelectedItems
DisplayMode: =DisplayMode.View
Height: =Parent.Height
InputTextPlaceholder: =""
IsSearchable: =false
Items: |-
=RenameColumns(
gblSearchTimeframeMinutes.DisplayValue,
DisplayValue,
Value
)
Width: =60
X: =110
Y: =35
- lblReviewTimeframeStartMinute:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
Height: =Parent.Height
Text: ="分"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =30
X: =190
Y: =35
- lblReviewTimeframe:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
Height: =Parent.Height
Text: ="~"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =40
X: =220
Y: =35
- cmbReviewSelectEndHour:
Control: ComboBox@0.0.51
Properties:
AccessibleLabel: ="検索時間帯の確認:終了時間(時間)"
DefaultSelectedItems: =cmbSelectEndHour.SelectedItems
DisplayMode: =DisplayMode.View
Height: =Parent.Height
InputTextPlaceholder: =""
IsSearchable: =false
Items: =Sequence(24,0,1)
Width: =60
X: =270
Y: =35
- lblReviewTimeframeEndHour:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
Height: =Parent.Height
Text: ="時"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =30
X: =350
Y: =35
- cmbReviewSelectEndMinute:
Control: ComboBox@0.0.51
Properties:
AccessibleLabel: ="検索時間帯の確認:終了時間(分)"
DefaultSelectedItems: =cmbSelectEndMinute.SelectedItems
DisplayMode: =DisplayMode.View
Height: =Parent.Height
InputTextPlaceholder: =""
IsSearchable: =false
Items: |-
=RenameColumns(
gblSearchTimeframeMinutes.DisplayValue,
DisplayValue,
Value
)
Width: =60
X: =380
Y: =35
- lblReviewTimeframeEndMinute:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
Height: =Parent.Height
Text: ="分"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =30
X: =460
Y: =35
- chkReviewActivityDomainSettings:
Control: CheckBox@0.0.30
Properties:
AccessibleLabel: ="各出席者の稼働時間内に絞るか確認するためのチェックボックス"
AlignInContainer: =AlignInContainer.Stretch
Checked: =chkActivityDomainSettings.Checked
DisplayMode: =DisplayMode.View
FillPortions: =1
Label: ="各出席者の稼働時間内に絞る"
LayoutMinHeight: =0
- ctnReviewMeetingDurationArea:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =2
LayoutDirection: =LayoutDirection.Vertical
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
LayoutMinWidth: =0
PaddingLeft: =30
Children:
- lblReviewMeetingDurationTitle:
Control: Text@0.0.51
Properties:
AlignInContainer: =AlignInContainer.Stretch
FillPortions: =1
Height: =Parent.Height
LayoutMinHeight: =0
Text: ="会議の長さ (分)"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Medium
Width: =122
X: =30
Y: =5
- ctnReviewMeetingDuration:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
Height: =40
LayoutDirection: =LayoutDirection.Horizontal
LayoutMinHeight: =0
LayoutMinWidth: =0
Children:
- numReviewMeetingDurationMinute:
Control: NumberInput@2.9.12
Properties:
AccessibleLabel: ="会議の長さの確認"
DisplayMode: =DisplayMode.View
Height: =Parent.Height
Max: =1439
Min: =1
PaddingLeft: =10
Value: =Value(numInputMeetingDuration.Text)
Width: =100
X: =40
Y: =35
- lblReviewMeetingDurationMinute:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
Height: =Parent.Height
Text: ="分"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =20
X: =106
Y: =35
- shpReviewSearchDuration:
Control: Rectangle@2.3.0
Properties:
AccessibleLabel: ="レイアウト調整用"
AlignInContainer: =AlignInContainer.Stretch
BorderColor: =RGBA(0, 18, 107, 1)
Fill: =Color.Transparent
FillPortions: =1
LayoutMinHeight: =0
TabIndex: =gblTabNonFocusable
- ctnSuggestedMeetingTimesList:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
FillPortions: =13
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Vertical
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
LayoutMinWidth: =0
PaddingBottom: =10
Children:
- ctnSuggestedMeetingTimesTitle:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Horizontal
LayoutMinHeight: =0
LayoutMinWidth: =0
PaddingLeft: =30
Children:
- lblSuggestedMeetingTimesTitle:
Control: Text@0.0.51
Properties:
Size: =18
Text: ="日程候補"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =120
X: =30
Y: =
- ctnSortSuggestedMeetingTimes:
Control: GroupContainer@1.3.0
Variant: ManualLayout
Properties:
AlignInContainer: =AlignInContainer.Center
DropShadow: =DropShadow.None
Height: =Parent.Height
LayoutMinHeight: =0
LayoutMinWidth: =0
X: =126
Children:
- cmbSortSuggestedMeetingTimes:
Control: ComboBox@0.0.51
Properties:
AccessibleLabel: ="日程候補の並び替えドロップダウン"
DefaultSelectedItems: =["日時 (昇順)"]
DisplayMode: |-
=If(
ctnAttendeeAvailabilityPopupBackground.Visible,
DisplayMode.Disabled,
DisplayMode.Edit
)
FontSize: =14
InputTextPlaceholder: =""
IsSearchable: =false
Items: =["日時 (昇順)", "日時 (降順)", "空き人数が多い順", "予定あり人数が少ない順"]
PaddingLeft: =40
Width: =237
Y: =(Parent.Height - Self.Height) / 2
- icoSortSuggestedMeetingTimes:
Control: Icon@0.0.7
Properties:
Height: =20
Icon: ="ArrowSort"
TabIndex: =gblTabNonFocusable
Width: =20
X: =10
Y: =(Parent.Height - Self.Height) / 2
- shpDividerSuggestedMeetingTimes:
Control: Rectangle@2.3.0
Properties:
AccessibleLabel: ="日程候補の仕切り"
AlignInContainer: =AlignInContainer.Stretch
BorderColor: =RGBA(69, 90, 100, 0.1)
Fill: =RGBA(69, 90, 100, 0.1)
Height: =1
OnSelect: =
TabIndex: =gblTabNonFocusable
Width: =
Y: =Parent.Height - 2
- ctnSuggestedMeetingTimesBody:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =7
LayoutDirection: =LayoutDirection.Vertical
LayoutMinHeight: =0
LayoutMinWidth: =0
RadiusBottomLeft: =0
RadiusBottomRight: =0
RadiusTopLeft: =0
RadiusTopRight: =0
Children:
- galSuggestedMeetingTimesList:
Control: Gallery@2.15.0
Variant: BrowseLayout_Vertical_TwoTextOneImageVariant_ver5.0
Properties:
AccessibleLabel: ="日程候補リスト"
BorderColor: =RGBA(0, 18, 107, 1)
ItemAccessibleLabel: ="日程候補"
Items: |-
=Switch(
cmbSortSuggestedMeetingTimes.Selected.Value,
"日時 (昇順)",
SortByColumns(
colSummarizedMeetingTimes,
"startDateTime",
SortOrder.Ascending
),
"日時 (降順)",
SortByColumns(
colSummarizedMeetingTimes,
"startDateTime",
SortOrder.Descending
),
"空き人数が多い順",
SortByColumns(
colSummarizedMeetingTimes,
"freeAttendeesCount",
SortOrder.Descending
),
"予定あり人数が少ない順",
SortByColumns(
colSummarizedMeetingTimes,
"busyAttendeesCount",
SortOrder.Ascending
)
)
LoadingSpinnerColor: =gblThemeColorBlue
TabIndex: =gblTabNonFocusable
TemplateSize: =60
Children:
- shpSuggestedMeetingTimesDivider:
Control: Rectangle@2.3.0
Properties:
AccessibleLabel: ="日程候補の仕切り"
BorderColor: =RGBA(0, 18, 107, 1)
Fill: =RGBA(69, 90, 100, 0.1)
Height: =1
OnSelect: =Select(Parent)
TabIndex: =gblTabNonFocusable
Width: =Parent.TemplateWidth
Y: =Parent.TemplateHeight - Self.Height
- ctnSuggestedMeetingTimesDetails:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
Height: =Parent.TemplateHeight - 1
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Horizontal
RadiusBottomLeft: =0
RadiusBottomRight: =0
RadiusTopLeft: =0
RadiusTopRight: =0
Width: =Parent.Width
Children:
- shpSelectedMeetingTime:
Control: Rectangle@2.3.0
Properties:
AccessibleLabel: ="選択中の日程候補を示す青い印"
BorderColor: =RGBA(0, 18, 107, 1)
Fill: |-
=If(
And(
gblSelectedSuggestionDateTimeRecord.startDateTime = ThisItem.startDateTime,
gblSelectedSuggestionDateTimeRecord.endDateTime = ThisItem.endDateTime
),
gblThemeColorBlue,
Color.Transparent
)
Height: =galSuggestedMeetingTimesList.TemplateHeight
OnSelect: =
TabIndex: =gblTabNonFocusable
Width: =4
- lblSuggestedMeetingTimesDateTime:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
FillPortions: =4
Size: =16
Text: |-
=Substitute(
Text(
ThisItem.startDateTime,
"yyyy/mm/dd(ddd) hh:mm",
"ja-JP"
),
"曜日",
""
) & "~" & Text(
ThisItem.endDateTime,
"hh:mm",
"ja-JP"
)
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =300
X: =30
Y: =17
- ctnSuggestedMeetingTimesContainsPlace:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =2
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Horizontal
LayoutMaxWidth: =130
LayoutMinHeight: =0
LayoutMinWidth: =0
Visible: |-
=Not(
IsEmpty(
Filter(
colSummarizedMeetingTimes,
placeAvailable
)
)
)
Children:
- icoCheckmarCircle:
Control: Icon@0.0.7
Properties:
Height: =24
Icon: ="CheckmarkCircle"
IconColor: =gblThemeColorGreen
TabIndex: =gblTabNonFocusable
Visible: =ThisItem.placeAvailable
Width: =24
X: =364
Y: =15
- lblSuggestedMeetingTimesContainsPlace:
Control: Text@0.0.51
Properties:
PaddingLeft: =5
Size: =13
Text: ="場所あり"
VerticalAlign: =VerticalAlign.Middle
Visible: =ThisItem.placeAvailable
Width: =70
X: =396
Y: =15
- ctnSuggestedMeetingTimesAvailabilityCount:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =9
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Horizontal
LayoutMinHeight: =0
LayoutMinWidth: =0
Children:
- ctnSuggestedMeetingTimesFreeCount:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
AlignInContainer: =AlignInContainer.SetByContainer
DropShadow: =DropShadow.None
FillPortions: =3
Height: =Parent.Height
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Horizontal
LayoutMinHeight: =0
LayoutMinWidth: =0
Children:
- lblSuggestedMeetingTimesFree:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
BorderRadius: =4
Fill: =RGBA(25, 118, 210, 0.1)
FillPortions: =2
FontColor: =gblThemeColorBlue
LayoutMinWidth: =0
Size: =13
Text: ="空き時間"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Medium
Width: =
- lblSuggestedMeetingTimesFreeCount:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
FillPortions: =1
LayoutMinWidth: =0
Size: =16
Text: =ThisItem.freeAttendeesCount
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =80
Wrap: =false
X: =396
Y: =15
- lblSuggestedMeetingTimesFreeUserText:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
FillPortions: =2
LayoutMinWidth: =0
PaddingLeft: =5
PaddingTop: =4
Size: =10
Text: ="ユーザー"
VerticalAlign: =VerticalAlign.Middle
Width: =80
Wrap: =false
X: =396
Y: =15
- ctnSuggestedMeetingTimesBusyCount:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
AlignInContainer: =AlignInContainer.SetByContainer
DropShadow: =DropShadow.None
FillPortions: =3
Height: =Parent.Height
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Horizontal
LayoutMinHeight: =0
LayoutMinWidth: =0
Children:
- lblSuggestedMeetingTimesBusy:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
BorderRadius: =4
Fill: =RGBA(239, 83, 80, 0.1)
FillPortions: =2
FontColor: =RGBA(239, 83, 80, 1)
LayoutMinWidth: =0
Size: =12
Text: ="予定あり"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Medium
Width: =0
- lblSuggestedMeetingTimesBusyCount:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
FillPortions: =1
LayoutMinWidth: =0
Size: =16
Text: =ThisItem.busyAttendeesCount
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =80
Wrap: =false
X: =396
Y: =15
- lblSuggestedMeetingTimesBusyUserText:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
FillPortions: =2
LayoutMinWidth: =0
PaddingLeft: =5
PaddingTop: =4
Size: =10
Text: ="ユーザー"
VerticalAlign: =VerticalAlign.Middle
Width: =80
Wrap: =false
X: =396
Y: =15
- ctnSuggestedMeetingTimesOthersCount:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
AlignInContainer: =AlignInContainer.SetByContainer
DropShadow: =DropShadow.None
FillPortions: =3
Height: =Parent.Height
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Horizontal
LayoutMinHeight: =0
LayoutMinWidth: =0
Children:
- lblSuggestedMeetingTimesOthers:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
AlignInContainer: =AlignInContainer.Center
BorderRadius: =4
Fill: =RGBA(80, 80, 80, 0.1)
FillPortions: =2
FontColor: =RGBA(80, 80, 80, 1)
LayoutMinWidth: =0
Size: =13
Text: ="その他"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Medium
Width: =0
- lblSuggestedMeetingTimesOthersCount:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
FillPortions: =1
LayoutMinWidth: =0
Size: =16
Text: =ThisItem.otherAttendeesCount
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =80
Wrap: =false
X: =396
Y: =15
- lblSuggestedMeetingTimesOthersUserText:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
FillPortions: =2
LayoutMinWidth: =0
PaddingLeft: =5
PaddingTop: =4
Size: =10
Text: ="ユーザー"
VerticalAlign: =VerticalAlign.Middle
Width: =80
Wrap: =false
X: =396
Y: =15
- ctnSuggestedMeetingTimesOpenDetails:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
AlignInContainer: =AlignInContainer.SetByContainer
DropShadow: =DropShadow.None
FillPortions: =2
Height: =Parent.Height
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Horizontal
LayoutMinHeight: =0
LayoutMinWidth: =0
Children:
- ctnSuggestedMeetingTimesDetailsButton:
Control: GroupContainer@1.3.0
Variant: ManualLayout
Properties:
AlignInContainer: =AlignInContainer.SetByContainer
FillPortions: =0
Height: =38
LayoutMinHeight: =30
LayoutMinWidth: =0
RadiusBottomLeft: =Self.Height / 2
RadiusBottomRight: =Self.Height / 2
RadiusTopLeft: =Self.Height / 2
RadiusTopRight: =Self.Height / 2
Width: =100
Children:
- btnSuggestedMeetingTimesDetails:
Control: Button@0.0.45
Properties:
AcceptsFocus: =Not(ctnAttendeeAvailabilityPopupBackground.Visible)
AccessibleLabel: ="ユーザーの予定状況確認ボタン"
Appearance: ='ButtonCanvas.Appearance'.Outline
BorderColor: =gblThemeColorBlue
BorderRadius: =Self.Height / 2
BorderRadiusBottomLeft: =Parent.Height / 2
BorderRadiusBottomRight: =Parent.Height / 2
BorderRadiusTopLeft: =Parent.Height / 2
BorderRadiusTopRight: =Parent.Height / 2
BorderThickness: =1
FontColor: =gblThemeColorBlue
Height: =Parent.Height
Icon: ="Open"
OnSelect: |-
=// © 2025 Hiromaru. This work is licensed under CC BY-NC 4.0.
Concurrent(
Set(
gblSelectedSuggestionDateTimeRecord,
ThisItem
),
Set(
gblSelectedSuggestionAvailabilityTable,
ThisItem.attendeeAvailabilityList
),
UpdateContext({locAttendeeAvailabilityPopupVisible: true})
)
Text: ="詳細"
Width: =Parent.Width
- ctnSuggestedMeetingTimesCreateMeeting:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =3
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Horizontal
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMaxWidth: =0
LayoutMinHeight: =0
LayoutMinWidth: =0
Children:
- ctnCreateMeetingButton:
Control: GroupContainer@1.3.0
Variant: ManualLayout
Properties:
AlignInContainer: =AlignInContainer.SetByContainer
Fill: =gblThemeColorBlue
FillPortions: =0
Height: =38
LayoutMinHeight: =30
LayoutMinWidth: =0
RadiusBottomLeft: =Self.Height / 2
RadiusBottomRight: =Self.Height / 2
RadiusTopLeft: =Self.Height / 2
RadiusTopRight: =Self.Height / 2
Width: =160
Children:
- btnCreateMeeting:
Control: Button@0.0.45
Properties:
AcceptsFocus: =Not(ctnAttendeeAvailabilityPopupBackground.Visible)
AccessibleLabel: ="予定作成画面への遷移ボタン"
Appearance: ='ButtonCanvas.Appearance'.Transparent
BorderRadius: =Self.Height / 2
BorderRadiusBottomLeft: =Parent.Height / 2
BorderRadiusBottomRight: =Parent.Height / 2
BorderRadiusTopLeft: =Parent.Height / 2
BorderRadiusTopRight: =Parent.Height / 2
FontColor: =RGBA(255, 255, 255, 1)
Height: =Parent.Height
Icon: ="Edit"
IconStyle: ='ButtonCanvas.IconStyle'.Outline
OnSelect: |-
=// © 2025 Hiromaru. This work is licensed under CC BY-NC 4.0.
Concurrent(
Set(
gblSelectedSuggestionDateTimeRecord,
ThisItem
),
Set(
gblSelectedSuggestionAvailabilityTable,
ThisItem.attendeeAvailabilityList
)
);
Navigate(
CreateEventScreen,
ScreenTransition.None
)
Text: ="予定作成へ"
Width: =Parent.Width
- ctnAttendeeAvailabilityPopupBackground:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
Fill: =RGBA(80, 80, 80, 0.3)
Height: |-
=If(
locAttendeeAvailabilityPopupVisible,
Parent.Height,
0
)
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Vertical
LayoutJustifyContent: =LayoutJustifyContent.Center
Visible: =locAttendeeAvailabilityPopupVisible
Width: =Parent.Width
Children:
- ctnAttendeeAvailabilityPopup:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
AlignInContainer: =AlignInContainer.SetByContainer
DropShadow: =DropShadow.Semilight
Fill: =RGBA(255, 255, 255, 1)
FillPortions: =0
Height: =Parent.Height * 0.75
LayoutDirection: =LayoutDirection.Vertical
Width: =480
Children:
- ctnAttendeeAvailabilityPopupHeader:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
BorderColor: =RGBA(80, 80, 80, 0.3)
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Horizontal
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
LayoutMinWidth: =0
RadiusBottomLeft: =0
RadiusBottomRight: =0
Children:
- ctnAttendeeAvailabilityPopupHeaderLeft:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
LayoutDirection: =LayoutDirection.Vertical
LayoutMinHeight: =0
LayoutMinWidth: =0
- ctnAttendeeAvailabilityPopupHeaderCenter:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =6
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Vertical
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
LayoutMinWidth: =0
Children:
- lblAttendeeAvailabilityPopupTitle:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
FillPortions: =1
Size: =18
Text: ="出席者空き状況"
VerticalAlign: =VerticalAlign.Bottom
Weight: ='TextCanvas.Weight'.Semibold
Width: =Parent.Width
- lblAttendeeAvailabilityPopupDateTime:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
FillPortions: =1
Size: =17
Text: |-
=Text(
gblSelectedSuggestionDateTimeRecord.startDateTime,
"yyyy/mm/dd hh:mm"
) & "~" & Text(
gblSelectedSuggestionDateTimeRecord.endDateTime,
"hh:mm"
)
VerticalAlign: =VerticalAlign.Top
Width: =Parent.Width
- ctnAttendeeAvailabilityPopupHeaderRight:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Vertical
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
LayoutMinWidth: =0
Children:
- btnCloseAttendeeAvailabilityPopup:
Control: Button@0.0.45
Properties:
AccessibleLabel: ="空き状況リストを閉じるボタン"
Appearance: ='ButtonCanvas.Appearance'.Transparent
FontColor: =gblThemeColorRed
FontSize: =30
Height: =Parent.Height
Icon: ="Dismiss"
Layout: ='ButtonCanvas.Layout'.IconOnly
OnSelect: |-
=UpdateContext({locAttendeeAvailabilityPopupVisible: false})
Width: =Parent.Width
- ctnAttendeeAvailabilityPopupBody:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
BorderColor: =RGBA(80, 80, 80, 0.3)
DropShadow: =DropShadow.None
FillPortions: =6
LayoutDirection: =LayoutDirection.Vertical
LayoutMinHeight: =0
LayoutMinWidth: =0
RadiusTopLeft: =0
RadiusTopRight: =0
Children:
- galAttendeeAvailabilityList:
Control: Gallery@2.15.0
Variant: BrowseLayout_Vertical_TwoTextOneImageVariant_ver5.0
Properties:
AccessibleLabel: ="出席者の空き状況リスト"
BorderColor: =RGBA(0, 0, 0, 0)
FocusedBorderColor: =RGBA(200, 200, 200, 1)
FocusedBorderThickness: =1
Height: =400
ItemAccessibleLabel: ="出席者の空き状況"
Items: =colAttendees
LayoutMinHeight: =0
LayoutMinWidth: =0
LoadingSpinnerColor: =gblThemeColorBlue
TabIndex: =gblTabNonFocusable
TemplateSize: =90
Visible: =Parent.Visible
Width: =Parent.Width
Children:
- ctnAttendeeAvailability:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
Height: =Parent.TemplateHeight
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Horizontal
LayoutGap: =10
LayoutJustifyContent: =LayoutJustifyContent.Center
PaddingLeft: =20
PaddingRight: =20
Width: =Parent.TemplateWidth
Children:
- avtAttendeeAvailability:
Control: Avatar@1.0.40
Properties:
AccessibleLabel: ="出席者プロフィール画像"
Badge: ='Avatar.Badge'.None
FillPortions: =1
Height: =48
Image: =ThisItem.Picture
LayoutMinWidth: =0
Name: =ThisItem.DisplayName
Width: =48
X: =8
Y: =16
- ctnAttendeeAvailabilityInfoLabel:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
AlignInContainer: =AlignInContainer.SetByContainer
DropShadow: =DropShadow.None
FillPortions: =5
Height: =Parent.Height
LayoutDirection: =LayoutDirection.Vertical
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =Parent.Height
LayoutMinWidth: =0
Width: =
Children:
- lblAttendeeAvailabilityDisplayName:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
FillPortions: =1
Height: =20
LayoutMinHeight: =0
Text: |-
=ThisItem.DisplayName & If(
ThisItem.Mail = User().Email,
" (あなた)"
) & If(
Not(IsBlank(ThisItem.Department)),
" / " & ThisItem.Department
)
VerticalAlign: =VerticalAlign.Bottom
Weight: ='TextCanvas.Weight'.Semibold
Width: =Parent.Width
Wrap: =false
X: =
Y: =
- lblAttendeeAvailabilityEmail:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
AutoHeight: =true
Height: =20
LayoutMinHeight: =0
Text: =ThisItem.Mail
VerticalAlign: =VerticalAlign.Middle
Width: =Parent.Width
Wrap: =false
X: =
Y: =
- lblAttendeeAvailabilityRequired:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
FillPortions: =1
FontColor: |-
=If(
ThisItem.Required,
gblThemeColorRed,
gblThemeColorBlue
)
Height: =20
LayoutMinHeight: =0
PaddingTop: =4
Size: =12
Text: |-
=If(
ThisItem.Required,
"必須",
"任意"
)
VerticalAlign: =VerticalAlign.Top
Weight: ='TextCanvas.Weight'.Semibold
Width: =Parent.Width
Wrap: =false
X: =
Y: =
- lblAttendeeAvailability:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
BorderRadius: =4
Fill: |-
=LookUp(
gblFreeBusyStatusCategory,
JapaneseStatus = Self.Text,
CategoryBackgroundColor
)
FillPortions: =2
FontColor: |-
=LookUp(
gblFreeBusyStatusCategory,
JapaneseStatus = Self.Text,
CategoryFontColor
)
Height: =30
LayoutMinWidth: =0
Size: =12
Text: |-
=With(
{
scpJapaneseStatus: LookUp(
gblFreeBusyStatusCategory,
LookUp(
gblSelectedSuggestionAvailabilityTable As availabilityList,
availabilityList.email = ThisItem.Mail,
availabilityList.availability
) = EnglishStatus,
JapaneseStatus
)
},
If(
scpJapaneseStatus = "他の場所で仕事中",
"別場所勤務",
scpJapaneseStatus
)
)
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Medium
Width: =0
Screen1 上で右クリックし、「貼り付け」を選択します。
しばらく待つと、日程選択画面が作成されたことが分かります。

予定作成画面のコピー&貼り付け
最後に、予定作成画面のコードも同様の手順でコピーしてください。
- 下記「▶予定作成画面のコードを開く」を選択し、予定作成画面のコードを表示
- 右上の青いコピーボタンを選択
- 再度「▼予定作成画面のコードを開く」を選択し、予定作成画面のコードを非表示にする
Screens:
CreateEventScreen:
Properties:
LoadingSpinnerColor: =RGBA(56, 96, 178, 1)
OnVisible: |-
=Concurrent(
ClearCollect(
colConfirmedAttendees,
colAttendees
),
UpdateContext(
{
locIsDateTimeChanged: false,
locIsAttendeesChanged: false
}
),
Set(
gblProgressBarItems,
Table(
{
stepNumber: "1",
itemLabel: "日程検索画面",
isCurrentStep: false,
isCompleted: true
},
{
stepNumber: "2",
itemLabel: "日程選択画面",
isCurrentStep: false,
isCompleted: true
},
{
stepNumber: "3",
itemLabel: "予定作成画面",
isCurrentStep: true,
isCompleted: false
}
)
)
)
Children:
- ctnCreateEventScreenArea:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
Height: =Parent.Height
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Vertical
LayoutGap: =10
LayoutJustifyContent: =LayoutJustifyContent.Center
PaddingBottom: =10
PaddingLeft: =10
PaddingRight: =10
PaddingTop: =10
Width: =Parent.Width
Children:
- ctnAppTitle3:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
Fill: =gblThemeColorBlue
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Horizontal
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
LayoutMinWidth: =0
Children:
- ctnAppTitleLeft3:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
Height: =0
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Horizontal
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
LayoutMinWidth: =0
Children:
- ctnBack3:
Control: GroupContainer@1.3.0
Variant: ManualLayout
Properties:
AlignInContainer: =AlignInContainer.SetByContainer
BorderColor: =RGBA(255, 255, 255, 1)
DropShadow: =DropShadow.None
Fill: =gblThemeColorBlue
FillPortions: =0
Height: =Parent.Height * 0.5
LayoutMinHeight: =0
LayoutMinWidth: =0
RadiusBottomLeft: =(Self.Width + Self.BorderThickness) / 2
RadiusBottomRight: =(Self.Width + Self.BorderThickness) / 2
RadiusTopLeft: =(Self.Width + Self.BorderThickness) / 2
RadiusTopRight: =(Self.Width + Self.BorderThickness) / 2
Width: =Self.Height
Children:
- btnBack3:
Control: Button@0.0.45
Properties:
AcceptsFocus: =Not(ctnCreateEventPopupBackground.Visible)
AccessibleLabel: ="前の画面に戻るボタン"
Appearance: ='ButtonCanvas.Appearance'.Transparent
BorderColor: =RGBA(255, 255, 255, 1)
BorderRadius: =Self.Width / 2
BorderThickness: =2
FontColor: =RGBA(255, 255, 255, 1)
FontSize: =Parent.Width * 0.75
FontWeight: =FontWeight.Normal
Height: =Parent.Width
Icon: ="ChevronLeft"
IconStyle: ='ButtonCanvas.IconStyle'.Filled
Layout: ='ButtonCanvas.Layout'.IconOnly
OnSelect: =Back()
Text: =
Width: =Parent.Width
- ctnAppTitleCenter3:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =8
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Horizontal
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
LayoutMinWidth: =0
Children:
- icoAppTitleCalendar3:
Control: Icon@0.0.7
Properties:
Height: =Self.Width
Icon: ="Calendar"
IconColor: =RGBA(255, 255, 255, 1)
TabIndex: =gblTabNonFocusable
Width: =Parent.Height * 0.6
X: =34
Y: =4
- lblAppTitle3:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
FontColor: =RGBA(255, 255, 255, 1)
Height: =Parent.Height
Size: =24
Text: ="日程調整アプリ"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =200
X: =85
- ctnAppTitleRight3:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Vertical
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
LayoutMinWidth: =0
PaddingTop: =8
Children:
- ctnHowToUse3:
Control: GroupContainer@1.3.0
Variant: ManualLayout
Properties:
AlignInContainer: =AlignInContainer.Center
BorderColor: =RGBA(255, 255, 255, 1)
DropShadow: =DropShadow.Bold
Fill: =RGBA(255, 255, 255, 1)
FillPortions: =3
LayoutMinHeight: =0
LayoutMinWidth: =0
RadiusBottomLeft: =Self.Width / 2
RadiusBottomRight: =Self.Width / 2
RadiusTopLeft: =Self.Width / 2
RadiusTopRight: =Self.Width / 2
Width: =Self.Height
Children:
- btnHowToUse3:
Control: Button@0.0.45
Properties:
AcceptsFocus: =Not(ctnCreateEventPopupBackground.Visible)
AccessibleLabel: ="使い方ページへの遷移ボタン"
Appearance: ='ButtonCanvas.Appearance'.Transparent
BorderColor: =RGBA(255, 255, 255, 1)
BorderRadius: =Self.Width / 2
BorderThickness: =0
FontColor: =gblThemeColorBlue
FontSize: =Parent.Width * 0.75
FontWeight: =FontWeight.Normal
Height: =Parent.Width
Icon: ="Question"
IconStyle: ='ButtonCanvas.IconStyle'.Filled
Layout: ='ButtonCanvas.Layout'.IconOnly
OnSelect: =Launch("https://power365medium.com/usage-original-scheduling-app#create-event-screen")
Text: =
Width: =Parent.Width
- btnHowToUseLabel3:
Control: Button@0.0.45
Properties:
AcceptsFocus: =false
AccessibleLabel: ="使い方ページへの遷移ラベル"
Appearance: ='ButtonCanvas.Appearance'.Transparent
BorderColor: =RGBA(255, 255, 255, 1)
BorderRadius: =Self.Width / 2
BorderThickness: =0
FillPortions: =2
FontColor: =RGBA(255, 255, 255, 1)
FontSize: =16
FontWeight: =FontWeight.Semibold
Height: =0
IconStyle: ='ButtonCanvas.IconStyle'.Filled
Layout: ='ButtonCanvas.Layout'.TextOnly
LayoutMinHeight: =0
OnSelect: =Select(btnHowToUse3)
Text: ="使い方"
Width: =Parent.Width
- ctnProgressBarArea3:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Vertical
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
Children:
- ctnProgressBar3:
Control: GroupContainer@1.3.0
Variant: ManualLayout
Properties:
AlignInContainer: =AlignInContainer.Center
DropShadow: =DropShadow.None
EnableChildFocus: =false
LayoutMinHeight: =0
Width: =800
Children:
- shpProgressBarGray3:
Control: Rectangle@2.3.0
Properties:
AccessibleLabel: ="進捗を表す灰色のバー"
BorderColor: =RGBA(0, 18, 107, 1)
Fill: =RGBA(200, 200, 200, 1)
Height: =3
TabIndex: =gblTabNonFocusable
Width: =Parent.Width * 2 / 3
X: =Parent.Width / 6
Y: =(Parent.Height / 4) - (Self.Height / 2)
- shpProgressBarBlue3:
Control: Rectangle@2.3.0
Properties:
AccessibleLabel: ="進捗を表す青いバー"
BorderColor: =RGBA(0, 18, 107, 1)
Fill: =gblThemeColorBlue
Height: =3
TabIndex: =gblTabNonFocusable
Width: =Parent.Width * 2 / 3
X: =Parent.Width / 6
Y: =(Parent.Height / 4) - (Self.Height / 2)
- galProgressBar3:
Control: Gallery@2.15.0
Variant: BrowseLayout_Horizontal_TwoTextOneImageVariant_ver5.0
Properties:
AccessibleLabel: ="日程検索から予定作成までのステップバー"
BorderColor: =RGBA(0, 18, 107, 1)
DelayItemLoading: =false
Height: =61
ItemAccessibleLabel: ="日程検索から予定作成までのステップ"
Items: =gblProgressBarItems
LoadingSpinnerColor: =gblThemeColorBlue
Selectable: =false
TabIndex: =gblTabNonFocusable
TemplateSize: =Self.Width / 3
Width: =Parent.Width
Children:
- ctnProgressStep3:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
Height: =61
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Vertical
LayoutJustifyContent: =LayoutJustifyContent.Center
Width: =Parent.TemplateWidth
Children:
- ctnProgressStepBadge3:
Control: GroupContainer@1.3.0
Variant: ManualLayout
Properties:
AlignInContainer: =AlignInContainer.Center
BorderColor: =gblThemeColorBlue
DropShadow: |-
=If(
ThisItem.isCurrentStep,
DropShadow.Regular,
DropShadow.None
)
EnableChildFocus: =false
Fill: =RGBA(255, 255, 255, 1)
Height: =21
LayoutMinHeight: =0
LayoutMinWidth: =0
RadiusBottomLeft: =Self.Height / 2
RadiusBottomRight: =Self.Height / 2
RadiusTopLeft: =Self.Height / 2
RadiusTopRight: =Self.Height / 2
Width: =Self.Height
Children:
- lblProgressStep3:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
BorderColor: |-
=If(
ThisItem.isCurrentStep,
gblThemeColorBlue,
gblThemeColorGray
)
BorderRadius: =Self.Height / 2
BorderStyle: =BorderStyle.Solid
BorderThickness: =2
Fill: |-
=If(
ThisItem.isCurrentStep,
RGBA(
255,
255,
255,
1
),
RGBA(
200,
200,
200,
1
)
)
FontColor: |-
=If(
ThisItem.isCurrentStep,
gblThemeColorBlue,
Color.White
)
Height: =Self.Width
Size: =18
Text: =ThisItem.stepNumber
VerticalAlign: =VerticalAlign.Middle
Visible: =Not(ThisItem.isCompleted)
Weight: ='TextCanvas.Weight'.Semibold
Width: =Parent.Width
X: =(Parent.Width - Self.Width) / 2
Y: =(Parent.Height - Self.Height) / 2
- icoProgressStep3:
Control: Icon@0.0.7
Properties:
Height: =Parent.Height
Icon: ="CheckmarkCircle"
IconColor: =gblThemeColorBlue
IconStyle: ='Icon.IconStyle'.Filled
TabIndex: =gblTabNonFocusable
Visible: =ThisItem.isCompleted
Width: =Parent.Width
X: =(Parent.Width - Self.Width) / 2
Y: =(Parent.Height - Self.Height) / 2
- lblProgressStepTitle3:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
BorderRadius: =Self.Height / 2
FillPortions: =1
FontColor: |-
=If(
ThisItem.isCompleted,
gblThemeColorGray,
ThisItem.isCurrentStep,
gblThemeColorBlue,
gblThemeColorGray
)
Height: =Parent.Height
LayoutMinHeight: =0
Size: =18
Text: =ThisItem.itemLabel
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Medium
Width: =Parent.Width
- ctnEventSettingsArea:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =8
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Horizontal
LayoutGap: =20
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
LayoutMinWidth: =0
PaddingBottom: =2
PaddingLeft: =2
PaddingRight: =2
PaddingTop: =2
Children:
- ctnBasicSettingsArea:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.Semilight
FillPortions: =5
LayoutDirection: =LayoutDirection.Vertical
LayoutGap: =10
PaddingLeft: =10
PaddingRight: =10
PaddingTop: =10
Children:
- lblBasicSettingsTitle:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
AlignInContainer: =AlignInContainer.Stretch
FillPortions: =1
Height: =30
LayoutMinHeight: =0
LayoutMinWidth: =0
PaddingLeft: =20
Size: =18
Text: ="基本設定"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =160
X: =20
Y: =4
- ctnEventTitleAndTeamsSettings:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =3
LayoutDirection: =LayoutDirection.Horizontal
LayoutMinHeight: =0
PaddingLeft: =30
Children:
- ctnEventTitleSettings:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
AlignInContainer: =AlignInContainer.Center
DropShadow: =DropShadow.None
FillPortions: =3
Height: =Parent.Height
LayoutDirection: =LayoutDirection.Vertical
LayoutMinHeight: =0
LayoutMinWidth: =0
Children:
- lblEventTitleSettings:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
AlignInContainer: =AlignInContainer.Stretch
FillPortions: =4
Height: =30
LayoutMinHeight: =0
LayoutMinWidth: =0
Text: ="イベントタイトル"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =160
X: =20
Y: =4
- txtEventTitleSettings:
Control: TextInput@0.0.54
Properties:
AccessibleLabel: ="イベントタイトルの入力欄"
Align: =Align.Left
AlignInContainer: =AlignInContainer.Start
DisplayMode: |-
=If(
ctnCreateEventPopupBackground.Visible,
DisplayMode.Disabled,
DisplayMode.Edit
)
FillPortions: =5
LayoutMinHeight: =0
Placeholder: ="会議・イベントのタイトルを入力してください"
ValidationState: |-
=If(
locEventTitleBlankError,
"Error",
"None"
)
Width: =Parent.Width * 0.9
- lblEventTitleSettingsError:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
FillPortions: =4
FontColor: =gblThemeColorRed
Height: =Parent.Height
LayoutMinHeight: =0
PaddingLeft: =10
Size: =13
Text: |-
=If(
locEventTitleBlankError,
"タイトルを入力してください"
)
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =txtEventTitleSettings.Width
X: =40
Y: =75
- ctnTeamsSettings:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
LayoutDirection: =LayoutDirection.Vertical
LayoutMinHeight: =0
LayoutMinWidth: =0
Children:
- lblTeamsSettings:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
AlignInContainer: =AlignInContainer.Stretch
FillPortions: =4
Height: =30
LayoutMinHeight: =0
Text: ="Teams会議"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =160
X: =20
Y: =4
- tglTeamsSettings:
Control: Toggle@1.1.5
Properties:
AccessibleLabel: ="Teams会議のON/OFF設定"
DisplayMode: |-
=If(
ctnCreateEventPopupBackground.Visible,
DisplayMode.Disabled,
DisplayMode.Edit
)
FillPortions: =5
Label: =
LayoutMinHeight: =0
- lblEventTeamsError:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
FillPortions: =4
FontColor: =gblThemeColorRed
Height: =Parent.Height
LayoutMinHeight: =0
PaddingLeft: =10
Text: =""
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =1
X: =40
Y: =75
- ctnEventDateTimeSettings:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =3
LayoutDirection: =LayoutDirection.Vertical
LayoutMinHeight: =0
PaddingLeft: =30
PaddingRight: =30
Children:
- ctnEventDateTimeSettingsTitle:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =4
LayoutDirection: =LayoutDirection.Horizontal
LayoutMinHeight: =0
LayoutMinWidth: =0
Width: =
Children:
- lblEventDateTimeSettingsTitle:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
AlignInContainer: =AlignInContainer.Stretch
Height: =36
LayoutMinHeight: =0
Text: ="日時 (日本時間)"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =120
X: =20
Y: =4
- btnResetEventDateTime:
Control: Button@0.0.45
Properties:
AcceptsFocus: =Not(ctnCreateEventPopupBackground.Visible)
AccessibleLabel: ="日時設定をリセットするボタン"
Appearance: ='ButtonCanvas.Appearance'.Transparent
FontColor: =gblThemeColorBlue
FontSize: =20
FontWeight: =FontWeight.Normal
Height: =Parent.Height
Icon: ="ArrowReset"
Layout: ='ButtonCanvas.Layout'.IconOnly
OnSelect: |-
=Concurrent(
Reset(dtpEventStartDate),
Reset(cmbEventStartHour),
Reset(cmbEventStartMinute),
Reset(dtpEventEndDate),
Reset(cmbEventEndHour),
Reset(cmbEventEndMinute)
);
UpdateContext({locIsDateTimeChanged: false})
Text: ="元に戻す"
Visible: =locIsDateTimeChanged
Width: =Self.Height
- ctnInputEventDateTime:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =5
Height: =36
LayoutDirection: =LayoutDirection.Horizontal
LayoutMinHeight: =0
Children:
- ctnInputEventStartDateTime:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
LayoutDirection: =LayoutDirection.Horizontal
LayoutGap: =4
LayoutMinHeight: =0
LayoutMinWidth: =0
Width: =180
Children:
- dtpEventStartDate:
Control: DatePicker@0.0.46
Properties:
AccessibleLabel: ="予定開始日の選択"
DateTimeZone: ='DatePickerCanvas.DateTimeZone'.Local
DisplayMode: |-
=If(
ctnCreateEventPopupBackground.Visible,
DisplayMode.Disabled,
DisplayMode.Edit
)
FillPortions: =8
Format: ="yyyy/mm/dd"
Height: =Parent.Height
LayoutMinWidth: =0
OnChange: |-
=UpdateContext({locIsDateTimeChanged: true})
Placeholder: ="開始日時"
SelectedDate: =DateValue(gblSelectedSuggestionDateTimeRecord.startDateTime)
ValidationState: |-
=If(
locEventDateTimeBlankError,
If(
IsBlank(Self.SelectedDate),
"Error",
"None"
),
locEventDateTimePastError,
"Error",
locEventTimeframeError,
"Error"
)
Width: =0
- cmbEventStartHour:
Control: ComboBox@0.0.51
Properties:
AccessibleLabel: ="予定開始日時選択(時間)"
DefaultSelectedItems: =[Hour(gblSelectedSuggestionDateTimeRecord.startDateTime)]
DisplayMode: |-
=If(
ctnCreateEventPopupBackground.Visible,
DisplayMode.Disabled,
DisplayMode.Edit
)
FillPortions: =4
Height: =Parent.Height
InputTextPlaceholder: =""
IsSearchable: =false
Items: =Sequence(24,0,1)
LayoutMinWidth: =0
OnChange: |-
=UpdateContext({locIsDateTimeChanged: true})
ValidationState: |-
=If(
locEventDateTimeBlankError,
If(
IsBlank(Self.Selected.Value),
"Error",
"None"
),
locEventDateTimePastError,
"Error",
locEventTimeframeError,
"Error"
)
Width: =70
X: =40
Y: =35
- lblEventStartHour:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
FillPortions: =1
Height: =Parent.Height
LayoutMinWidth: =0
Text: ="時"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Regular
Width: =30
X: =40
Y: =35
- cmbEventStartMinute:
Control: ComboBox@0.0.51
Properties:
AccessibleLabel: ="予定開始日時選択(分)"
DefaultSelectedItems: |-
=[
LookUp(
gblSearchTimeframeMinutes,
Value = Minute(gblSelectedSuggestionDateTimeRecord.startDateTime),
DisplayValue
)
]
DisplayMode: |-
=If(
ctnCreateEventPopupBackground.Visible,
DisplayMode.Disabled,
DisplayMode.Edit
)
FillPortions: =4
Height: =Parent.Height
InputTextPlaceholder: =""
IsSearchable: =false
Items: |-
=RenameColumns(
gblSearchTimeframeMinutes.DisplayValue,
DisplayValue,
Value
)
LayoutMinWidth: =0
OnChange: |-
=UpdateContext({locIsDateTimeChanged: true})
ValidationState: |-
=If(
locEventDateTimeBlankError,
If(
IsBlank(Self.Selected.Value),
"Error",
"None"
),
locEventDateTimePastError,
"Error",
locEventTimeframeError,
"Error"
)
Width: =70
X: =30
Y: =35
- lblEventStartMinute:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
FillPortions: =1
Height: =Parent.Height
LayoutMinWidth: =0
Text: ="分"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Regular
Width: =30
X: =110
Y: =35
- lblEventTimeframe:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
Height: =Parent.Height
LayoutMinWidth: =0
Text: ="~"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Regular
Width: =30
X: =110
Y: =35
- ctnInputEventEndDateTime:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
LayoutDirection: =LayoutDirection.Horizontal
LayoutGap: =4
LayoutMinHeight: =0
LayoutMinWidth: =0
Width: =180
Children:
- dtpEventEndDate:
Control: DatePicker@0.0.46
Properties:
AccessibleLabel: ="予定終了日の選択"
DateTimeZone: ='DatePickerCanvas.DateTimeZone'.Local
DisplayMode: |-
=If(
ctnCreateEventPopupBackground.Visible,
DisplayMode.Disabled,
DisplayMode.Edit
)
FillPortions: =8
Format: ="yyyy/mm/dd"
Height: =Parent.Height
LayoutMinWidth: =0
OnChange: |-
=UpdateContext({locIsDateTimeChanged: true})
Placeholder: ="終了日時"
SelectedDate: =DateValue(gblSelectedSuggestionDateTimeRecord.endDateTime)
ValidationState: |-
=If(
locEventDateTimeBlankError,
If(
IsBlank(Self.SelectedDate),
"Error",
"None"
),
locEventDateTimePastError,
"Error",
locEventTimeframeError,
"Error"
)
Width: =0
- cmbEventEndHour:
Control: ComboBox@0.0.51
Properties:
AccessibleLabel: ="予定終了日時選択(時間)"
DefaultSelectedItems: =[Hour(gblSelectedSuggestionDateTimeRecord.endDateTime)]
DisplayMode: |-
=If(
ctnCreateEventPopupBackground.Visible,
DisplayMode.Disabled,
DisplayMode.Edit
)
FillPortions: =4
Height: =Parent.Height
InputTextPlaceholder: =""
IsSearchable: =false
Items: =Sequence(24,0,1)
LayoutMinWidth: =0
OnChange: |-
=UpdateContext({locIsDateTimeChanged: true})
ValidationState: |-
=If(
locEventDateTimeBlankError,
If(
IsBlank(Self.Selected.Value),
"Error",
"None"
),
locEventDateTimePastError,
"Error",
locEventTimeframeError,
"Error"
)
Width: =70
X: =40
Y: =35
- lblEventEndHour:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
FillPortions: =1
Height: =Parent.Height
LayoutMinWidth: =0
Text: ="時"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Regular
Width: =30
X: =40
Y: =35
- cmbEventEndMinute:
Control: ComboBox@0.0.51
Properties:
AccessibleLabel: ="予定終了日時選択(分)"
DefaultSelectedItems: |-
=[
LookUp(
gblSearchTimeframeMinutes,
Value = Minute(gblSelectedSuggestionDateTimeRecord.endDateTime),
DisplayValue
)
]
DisplayMode: |-
=If(
ctnCreateEventPopupBackground.Visible,
DisplayMode.Disabled,
DisplayMode.Edit
)
FillPortions: =4
Height: =Parent.Height
InputTextPlaceholder: =""
IsSearchable: =false
Items: |-
=RenameColumns(
gblSearchTimeframeMinutes.DisplayValue,
DisplayValue,
Value
)
LayoutMinWidth: =0
OnChange: |-
=UpdateContext({locIsDateTimeChanged: true})
ValidationState: |-
=If(
locEventDateTimeBlankError,
If(
IsBlank(Self.Selected.Value),
"Error",
"None"
),
locEventDateTimePastError,
"Error",
locEventTimeframeError,
"Error"
)
Width: =70
X: =30
Y: =35
- lblEventEndMinute:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
FillPortions: =1
Height: =Parent.Height
LayoutMinWidth: =0
Text: ="分"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Regular
Width: =30
X: =110
Y: =35
- lblEventDateTimeSettingsError:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
FillPortions: =4
FontColor: =gblThemeColorRed
Height: =Parent.Height
LayoutMinHeight: =0
PaddingLeft: =10
Text: |-
=If(
locEventDateTimeBlankError,
"日時を入力してください",
locEventTimeframeError,
"終了日時が開始日時よりも後になるよう設定してください",
locEventDateTimePastError,
"現在時刻以降の日時を入力してください",
""
)
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =Parent.Width - Parent.PaddingLeft
X: =40
Y: =75
- ctnEventAttendeesSettings:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =10
LayoutDirection: =LayoutDirection.Vertical
LayoutMinHeight: =0
PaddingLeft: =30
Children:
- ctnEventAttendeesTitle:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
LayoutDirection: =LayoutDirection.Horizontal
LayoutMinHeight: =0
LayoutMinWidth: =0
Children:
- lblEventAttendeesSettingsTitle:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
AlignInContainer: =AlignInContainer.Stretch
Height: =36
LayoutMinHeight: =0
Text: ="出席者"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =60
X: =20
Y: =4
- btnResetEventAttendees:
Control: Button@0.0.45
Properties:
AcceptsFocus: =Not(ctnCreateEventPopupBackground.Visible)
AccessibleLabel: ="出席者設定をリセットするボタン"
Appearance: ='ButtonCanvas.Appearance'.Transparent
FontColor: =gblThemeColorBlue
FontSize: =20
FontWeight: =FontWeight.Normal
Height: =Parent.Height
Icon: ="ArrowReset"
IconStyle: ='ButtonCanvas.IconStyle'.Outline
Layout: ='ButtonCanvas.Layout'.IconOnly
LayoutMinWidth: =0
OnSelect: |-
=ClearCollect(
colConfirmedAttendees,
colAttendees
);
UpdateContext({locIsAttendeesChanged: false})
Text: ="元に戻す"
Visible: =locIsAttendeesChanged
Width: =Self.Height
- galEventAttendeeList:
Control: Gallery@2.15.0
Variant: BrowseLayout_Vertical_TwoTextOneImageVariant_ver5.0
Properties:
AccessibleLabel: ="出席者リスト"
BorderColor: =RGBA(0, 0, 0, 0)
FillPortions: =10
FocusedBorderColor: =RGBA(200, 200, 200, 1)
FocusedBorderThickness: =1
Height: =400
ItemAccessibleLabel: ="出席者"
Items: =colConfirmedAttendees
LayoutMinHeight: =0
LayoutMinWidth: =0
LoadingSpinnerColor: =gblThemeColorBlue
TabIndex: |-
=If(
ctnCreateEventPopupBackground.Visible,
gblTabNonFocusable,
gblTabFocusable
)
TemplateSize: =70
Visible: =Parent.Visible
Width: =Parent.Width
Children:
- ctnEventAttendee:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
Height: =Parent.TemplateHeight
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Horizontal
LayoutGap: =10
LayoutJustifyContent: =LayoutJustifyContent.Center
PaddingRight: =15
Width: =Parent.TemplateWidth
Children:
- avtEventAttendee:
Control: Avatar@1.0.40
Properties:
AccessibleLabel: ="出席者プロフィール画像"
Badge: ='Avatar.Badge'.None
FillPortions: =1
Height: =48
Image: =ThisItem.Picture
LayoutMinWidth: =0
Name: =ThisItem.DisplayName
Width: =48
X: =8
Y: =16
- ctnEventAttendeeInfoLabel:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
AlignInContainer: =AlignInContainer.SetByContainer
DropShadow: =DropShadow.None
FillPortions: =4
Height: =Parent.Height
LayoutDirection: =LayoutDirection.Vertical
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =Parent.Height
LayoutMinWidth: =0
Width: =
Children:
- lblEventAttendeeDisplayName:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
Height: =20
Text: |-
=ThisItem.DisplayName & If(
ThisItem.Mail = User().Email,
" (あなた)"
) & If(
Not(IsBlank(ThisItem.Department)),
" / " & ThisItem.Department
)
VerticalAlign: =VerticalAlign.Top
Weight: ='TextCanvas.Weight'.Semibold
Width: =Parent.Width
Wrap: =false
X: =
Y: =
- lblEventAttendeeEmail:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
Height: =20
Text: =ThisItem.Mail
VerticalAlign: =VerticalAlign.Top
Width: =Parent.Width
Wrap: =false
X: =
Y: =
- lblEventAttendeeAvailability:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
BorderRadius: =4
Fill: |-
=LookUp(
gblFreeBusyStatusCategory,
JapaneseStatus = Substitute(
Substitute(
Self.Text,
"?",
""
),
"別場所勤務",
"他の場所で仕事中"
),
CategoryBackgroundColor
)
FillPortions: =2
FontColor: |-
=LookUp(
gblFreeBusyStatusCategory,
JapaneseStatus = Substitute(
Substitute(
Self.Text,
"?",
""
),
"別場所勤務",
"他の場所で仕事中"
),
CategoryFontColor
)
Height: =30
LayoutMinWidth: =0
Size: =12
Text: |-
=With(
{
scpJapaneseStatus: LookUp(
gblFreeBusyStatusCategory,
LookUp(
gblSelectedSuggestionAvailabilityTable As availabilityList,
availabilityList.email = ThisItem.Mail,
availabilityList.availability
) = EnglishStatus,
JapaneseStatus
)
},
If(
scpJapaneseStatus = "他の場所で仕事中",
"別場所勤務",
scpJapaneseStatus
) & If(
locIsDateTimeChanged,
"?",
""
)
)
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Medium
Width: =0
Wrap: =false
- ctnSelectEventAttendeeType:
Control: GroupContainer@1.3.0
Variant: ManualLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =3
LayoutMinHeight: =0
LayoutMinWidth: =0
Children:
- cmbSelectEventAttendeeType:
Control: ComboBox@0.0.51
Properties:
AccessibleLabel: ="出席者のユーザー種類選択"
DefaultSelectedItems: |-
=[
LookUp(
gblAttendeeTypeList,
Type = ThisItem.AttendeeType,
DisplayName
)
]
DisplayMode: |-
=If(
ctnCreateEventPopupBackground.Visible,
DisplayMode.Disabled,
DisplayMode.Edit
)
FontSize: =12
Height: =36
InputTextPlaceholder: ="種類の選択"
IsSearchable: =false
Items: |-
=RenameColumns(
gblAttendeeTypeList.DisplayName,
DisplayName,
Value
)
OnChange: |-
=UpdateContext({locIsAttendeesChanged: true});
Patch(
colConfirmedAttendees,
ThisItem,
{
AttendeeType: LookUp(
gblAttendeeTypeList,
DisplayName = Self.Selected.Value,
Type
)
}
)
PaddingLeft: =40
Width: =Parent.Width
X: =
Y: =(Parent.Height - Self.Height) / 2
- icoSelectEventAttendeeType:
Control: Icon@0.0.7
Properties:
Height: =24
Icon: =Switch(ThisItem.AttendeeType,"user","People","place","Home","resource","Print")
IconColor: =gblThemeColorBlue
IconStyle: ='Icon.IconStyle'.Outline
TabIndex: =gblTabNonFocusable
Width: =24
X: =8
Y: =((Parent.Height - Self.Height) / 2) + 1
- ctnSelectEventAttendeesRequired:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
AlignInContainer: =AlignInContainer.Center
FillPortions: =2
Height: =34
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Horizontal
LayoutGap: =-10
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
LayoutMinWidth: =0
PaddingLeft: =2
PaddingRight: =2
RadiusBottomLeft: =(Self.Height + Self.BorderThickness) / 2
RadiusBottomRight: =(Self.Height + Self.BorderThickness) / 2
RadiusTopLeft: =(Self.Height + Self.BorderThickness) / 2
RadiusTopRight: =(Self.Height + Self.BorderThickness) / 2
Children:
- btnSelectEventAttendeesRequired:
Control: Classic/Button@2.2.0
Properties:
BorderColor: =RGBA(0, 0, 0, 0)
BorderThickness: =0
Color: =RGBA(160, 160, 160, 1)
DisabledBorderColor: =RGBA(0, 0, 0, 0)
DisabledColor: =RGBA(255, 255, 255, 1)
DisabledFill: =gblThemeColorRed
DisplayMode: |-
=If(
ThisItem.Required,
DisplayMode.Disabled,
DisplayMode.Edit
)
Fill: =RGBA(0, 0, 0, 0)
FillPortions: =1
FocusedBorderColor: =Self.DisabledFill
FocusedBorderThickness: =1
Font: =Font.'Segoe UI'
FontWeight: |-
=If(
ThisItem.Required,
FontWeight.Semibold,
FontWeight.Normal
)
Height: =Parent.Height - 4
HoverBorderColor: =Self.BorderColor
HoverColor: =Self.Color
HoverFill: =Self.Fill
LayoutMinWidth: =0
OnSelect: |-
=UpdateContext({locIsAttendeesChanged: true});
Patch(
colConfirmedAttendees,
ThisItem,
{Required: true}
)
PaddingBottom: =0
PaddingLeft: =0
PaddingRight: =0
PaddingTop: =0
PressedBorderColor: =Color.Transparent
PressedFill: =Self.Fill
RadiusBottomLeft: =Parent.Height / 2
RadiusBottomRight: =Self.RadiusBottomLeft
RadiusTopLeft: =Self.RadiusBottomLeft
RadiusTopRight: =Self.RadiusBottomLeft
Size: =9
TabIndex: |-
=If(
ctnCreateEventPopupBackground.Visible,
gblTabNonFocusable,
gblTabFocusable
)
Text: ="必須"
Width: =50
X: =2
Y: =
- btnSelectEventAttendeesOptional:
Control: Classic/Button@2.2.0
Properties:
BorderColor: =RGBA(0, 0, 0, 0)
BorderThickness: =0
Color: =RGBA(160, 160, 160, 1)
DisabledBorderColor: =RGBA(0, 0, 0, 0)
DisabledColor: =RGBA(255, 255, 255, 1)
DisabledFill: =gblThemeColorBlue
DisplayMode: |-
=If(
ThisItem.Required,
DisplayMode.Edit,
DisplayMode.Disabled
)
Fill: =RGBA(0, 0, 0, 0)
FillPortions: =1
FocusedBorderColor: =Self.DisabledFill
FocusedBorderThickness: =1
Font: =Font.'Segoe UI'
FontWeight: |-
=If(
ThisItem.Required,
FontWeight.Normal,
FontWeight.Semibold
)
Height: =Parent.Height - 4
HoverBorderColor: =Self.BorderColor
HoverColor: =Self.Color
HoverFill: =Self.Fill
LayoutMinWidth: =0
OnSelect: |-
=UpdateContext({locIsAttendeesChanged: true});
Patch(
colConfirmedAttendees,
ThisItem,
{Required: false}
)
PressedBorderColor: =Color.Transparent
PressedFill: =Self.Fill
RadiusBottomLeft: =18
RadiusBottomRight: =18
RadiusTopLeft: =18
RadiusTopRight: =18
Size: =9
TabIndex: |-
=If(
ctnCreateEventPopupBackground.Visible,
gblTabNonFocusable,
gblTabFocusable
)
Text: ="任意"
Width: =50
X: =46
Y: =
- btnDeleteEventAttendee:
Control: Button@0.0.45
Properties:
AcceptsFocus: =Not(ctnCreateEventPopupBackground.Visible)
AccessibleLabel: ="出席者削除ボタン"
Align: =Align.Center
Appearance: ='ButtonCanvas.Appearance'.Transparent
DisplayMode: |-
=If(
ThisItem.Mail = User().Email,
DisplayMode.Disabled,
DisplayMode.Edit
)
FillPortions: =1
FontColor: =RGBA(255, 0, 0, 1)
FontSize: =30
Height: =30
Icon: ="Delete"
IconStyle: ='ButtonCanvas.IconStyle'.Outline
Layout: ='ButtonCanvas.Layout'.IconOnly
LayoutMinWidth: =0
OnSelect: |-
=UpdateContext({locIsAttendeesChanged: true});
Remove(
colConfirmedAttendees,
ThisItem
)
Text: =
VerticalAlign: =VerticalAlign.Middle
Width: =48
X: =Parent.Width - 40
Y: =9
- ctnAdvancedSettingsArea:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.Semilight
FillPortions: =4
LayoutDirection: =LayoutDirection.Vertical
LayoutGap: =10
PaddingBottom: =30
PaddingLeft: =10
PaddingRight: =10
PaddingTop: =10
Children:
- lblAdvancedSettingsTitle:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
AlignInContainer: =AlignInContainer.Stretch
FillPortions: =1
Height: =30
LayoutMinHeight: =0
LayoutMinWidth: =0
PaddingLeft: =20
Size: =18
Text: ="詳細設定"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =160
X: =20
Y: =4
- ctnEventBodySettings:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =10
LayoutDirection: =LayoutDirection.Vertical
LayoutMinHeight: =0
LayoutMinWidth: =0
PaddingBottom: =10
PaddingLeft: =30
PaddingRight: =20
Children:
- lblEventBodySettingsTitle:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
AlignInContainer: =AlignInContainer.Stretch
FillPortions: =1
Height: =30
LayoutMinHeight: =0
LayoutMinWidth: =0
Text: ="イベント本文"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =160
X: =20
Y: =4
- rteEventBodySettings:
Control: RichTextEditor@2.7.0
Properties:
AccessibleLabel: ="イベント内容・詳細の入力欄"
AlignInContainer: =AlignInContainer.Start
BorderColor: =RGBA(80,80,80,0.1)
Default: ="本時間にて会議を設定させていただきます。<br>お忙しいところ恐れ入りますが、ご参加いただけますと幸いです。<br><br><br><br><br><br>"
DisplayMode: |-
=If(
ctnCreateEventPopupBackground.Visible,
DisplayMode.Disabled,
DisplayMode.Edit
)
FillPortions: =10
Height: =Parent.Height
LayoutMinHeight: =0
TabIndex: |-
=If(
ctnCreateEventPopupBackground.Visible,
gblTabNonFocusable,
gblTabFocusable
)
Width: =Parent.Width - Parent.PaddingLeft - Parent.PaddingRight
X: =30
Y: =35
- ctnEventShowAsAndImportance:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =2
LayoutDirection: =LayoutDirection.Horizontal
LayoutMinHeight: =0
PaddingBottom: =4
Children:
- ctnEventShowAs:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
LayoutDirection: =LayoutDirection.Vertical
LayoutMinHeight: =0
PaddingLeft: =30
PaddingRight: =20
Children:
- lblEventShowAsTitle:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
AlignInContainer: =AlignInContainer.Stretch
FillPortions: =4
Height: =30
LayoutMinHeight: =0
LayoutMinWidth: =0
Text: ="表示方法"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =160
X: =20
Y: =4
- cmbEventShowAs:
Control: ComboBox@0.0.51
Properties:
AccessibleLabel: ="イベント開催時のステータス表示選択"
DefaultSelectedItems: =["予定あり"]
DisplayMode: |-
=If(
ctnCreateEventPopupBackground.Visible,
DisplayMode.Disabled,
DisplayMode.Edit
)
FillPortions: =5
Items: |-
=RenameColumns(
gblFreeBusyStatusCategory.JapaneseStatus,
JapaneseStatus,
Value
)
LayoutMinHeight: =0
LayoutMinWidth: =0
Width: =Parent.Width - Parent.PaddingLeft - Parent.PaddingRight
- ctnEventImportance:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Vertical
LayoutMinHeight: =0
LayoutMinWidth: =0
PaddingLeft: =30
PaddingRight: =20
Children:
- lblEventImportanceTitle:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
AlignInContainer: =AlignInContainer.Stretch
FillPortions: =4
Height: =30
LayoutMinHeight: =0
LayoutMinWidth: =0
Text: ="重要度"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =160
X: =20
Y: =4
- cmbEventImportance:
Control: ComboBox@0.0.51
Properties:
AccessibleLabel: ="イベントの重要度選択"
DefaultSelectedItems: =["標準"]
DisplayMode: |-
=If(
ctnCreateEventPopupBackground.Visible,
DisplayMode.Disabled,
DisplayMode.Edit
)
FillPortions: =5
Items: =["高","標準","低"]
LayoutMinHeight: =0
LayoutMinWidth: =0
Width: =Parent.Width - Parent.PaddingLeft - Parent.PaddingRight
- ctnEventReminderAndResponse:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =2
LayoutDirection: =LayoutDirection.Horizontal
LayoutMinHeight: =0
Children:
- ctnEventReminder:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Vertical
LayoutMinHeight: =0
LayoutMinWidth: =0
PaddingLeft: =30
PaddingRight: =10
Children:
- lblEventReminderTitle:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
AlignInContainer: =AlignInContainer.Stretch
FillPortions: =4
Height: =Parent.Height / 3
LayoutMinHeight: =0
LayoutMinWidth: =0
Text: ="アラーム"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =160
X: =20
Y: =4
- ctnEventReminderSettings:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
FillPortions: =6
Height: =Parent.Height / 3
LayoutAlignItems: =LayoutAlignItems.Stretch
LayoutDirection: =LayoutDirection.Horizontal
LayoutMinHeight: =0
LayoutMinWidth: =0
PaddingRight: =10
Children:
- tglEventReminder:
Control: Toggle@1.1.5
Properties:
AccessibleLabel: ="イベント直前のアラームのON/OFF設定"
Checked: =true
DisplayMode: |-
=If(
ctnCreateEventPopupBackground.Visible,
DisplayMode.Disabled,
DisplayMode.Edit
)
FillPortions: =3
Label: =
LayoutMinHeight: =0
LayoutMinWidth: =0
Width: =92
- numEventReminder:
Control: NumberInput@2.9.12
Properties:
AccessibleLabel: ="イベントの何分前にアラームを表示するか設定"
DisplayMode: |-
=If(
ctnCreateEventPopupBackground.Visible,
DisplayMode.Disabled,
DisplayMode.Edit
)
FillPortions: =3
LayoutMinHeight: =0
LayoutMinWidth: =0
Max: =1440
Min: =0
Value: =15
Visible: =tglEventReminder.Checked
Width: =96
- lblEventReminder:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
AutoHeight: =true
FillPortions: =2
Height: =Parent.Height
LayoutMinWidth: =0
Text: ="分前"
VerticalAlign: =VerticalAlign.Middle
Visible: =tglEventReminder.Checked
Weight: ='TextCanvas.Weight'.Regular
Width: =50
X: =150
Y: =35
- ctnEventResponseSettings:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
LayoutDirection: =LayoutDirection.Vertical
LayoutMinHeight: =0
PaddingLeft: =30
PaddingRight: =20
Children:
- lblEventResponseRequested:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Start
AlignInContainer: =AlignInContainer.Stretch
FillPortions: =4
Height: =Parent.Height / 3
LayoutMinHeight: =0
LayoutMinWidth: =0
Text: ="応答を要求"
VerticalAlign: =VerticalAlign.Middle
Weight: ='TextCanvas.Weight'.Semibold
Width: =160
X: =20
Y: =4
- tglEventResponseRequested:
Control: Toggle@1.1.5
Properties:
AccessibleLabel: ="出席者から応答を要求するかを設定"
Checked: =true
DisplayMode: |-
=If(
ctnCreateEventPopupBackground.Visible,
DisplayMode.Disabled,
DisplayMode.Edit
)
FillPortions: =6
Height: =Parent.Height
Label: =
LayoutMinHeight: =0
LayoutMinWidth: =0
Width: =Parent.Width - Parent.PaddingLeft - Parent.PaddingRight
- ctnCreateEventButtonArea:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
LayoutDirection: =LayoutDirection.Horizontal
LayoutJustifyContent: =LayoutJustifyContent.Center
LayoutMinHeight: =0
LayoutMinWidth: =0
PaddingTop: =10
Children:
- ctnCreateEventButton:
Control: GroupContainer@1.3.0
Variant: ManualLayout
Properties:
AlignInContainer: =AlignInContainer.SetByContainer
FillPortions: =0
Height: =44
LayoutMinWidth: =0
RadiusBottomLeft: =22
RadiusBottomRight: =22
RadiusTopLeft: =Self.Height / 2
RadiusTopRight: =22
Width: =150
X: =596
Y: =10
Children:
- btnCreateEvent:
Control: Classic/Button@2.2.0
Properties:
BorderColor: =RGBA(0, 0, 0, 0)
BorderThickness: =0
Color: =RGBA(255, 255, 255, 1)
DisabledBorderColor: =RGBA(0, 0, 0, 0)
DisabledColor: =RGBA(161, 159, 157, 1)
DisabledFill: =RGBA(242, 242, 241, 0)
DisplayMode: |-
=If(
IsEmpty(colAttendees),
DisplayMode.Disabled,
DisplayMode.Edit
)
Fill: =gblThemeColorBlue
FocusedBorderColor: =ColorFade(Self.Fill, -0.5)
Font: =Font.'Segoe UI'
Height: =44
HoverBorderColor: =RGBA(0, 0, 0, 0)
HoverColor: =RGBA(255, 255, 255, 1)
HoverFill: =RGBA(16, 110, 190, 1)
OnSelect: |-
=// © 2025 Hiromaru. This work is licensed under CC BY-NC 4.0.
With(
{
scpCurrentDateTimeJST: DateAdd(
DateAdd(
Now(),
TimeZoneOffset(),
TimeUnit.Minutes
),
9,
TimeUnit.Hours
),
scpStartDateTime: DateTimeValue(
Text(
DateAdd(
DateAdd(
dtpEventStartDate.SelectedDate,
cmbEventStartHour.Selected.Value + 9,
TimeUnit.Hours
),
TimeZoneOffset() + LookUp(
gblSearchTimeframeMinutes,
DisplayValue = cmbEventStartMinute.Selected.Value,
Value
),
TimeUnit.Minutes
),
DateTimeFormat.ShortDateTime24
),
"ja-JP"
),
scpEndDateTime: DateTimeValue(
Text(
DateAdd(
DateAdd(
dtpEventEndDate.SelectedDate,
cmbEventEndHour.Selected.Value + 9,
TimeUnit.Hours
),
TimeZoneOffset() + LookUp(
gblSearchTimeframeMinutes,
DisplayValue = cmbEventEndMinute.Selected.Value,
Value
),
TimeUnit.Minutes
),
DateTimeFormat.ShortDateTime24
),
"ja-JP"
)
},
UpdateContext(
{
locEventTitleBlankError: IsBlank(txtEventTitleSettings.Value),
locEventDateTimeBlankError: Or(
IsBlank(dtpEventStartDate.SelectedDate),
IsBlank(dtpEventEndDate.SelectedDate),
IsBlank(cmbEventStartHour.Selected.Value),
IsBlank(cmbEventStartMinute.Selected.Value),
IsBlank(cmbEventEndHour.Selected.Value),
IsBlank(cmbEventEndMinute.Selected.Value)
),
locEventDateTimePastError: scpEndDateTime < scpCurrentDateTimeJST,
locEventTimeframeError: scpStartDateTime >= scpEndDateTime
}
);
If(
Not(
Or(
locEventTitleBlankError,
locEventDateTimeBlankError,
locEventDateTimePastError,
locEventTimeframeError
)
),
UpdateContext({locIsCreatingEvent: true});
With(
{
scpMyCalendarId: LookUp(
Office365Outlook.CalendarGetTablesV2().value,
Or(
name = "予定表",
name = "Calendar"
)
).id,
scpRequiredAttendees: Concat(
Filter(
colConfirmedAttendees,
Or(
AttendeeType = "user",
AttendeeType = "resource"
),
Required
),
Mail,
";"
),
scpOptionalAttendees: Concat(
Filter(
colConfirmedAttendees,
Or(
AttendeeType = "user",
AttendeeType = "resource"
),
Not(Required)
),
Mail,
";"
),
scpResourceAttendees: Concat(
Filter(
colConfirmedAttendees,
AttendeeType = "place"
),
Mail,
";"
),
scpShowAs: LookUp(
gblFreeBusyStatusCategory,
JapaneseStatus = cmbEventShowAs.Selected.Value,
EnglishStatus
),
scpImportance: Switch(
cmbEventImportance.Selected.Value,
"高",
"high",
"標準",
"normal",
"低",
"low"
)
},
If(
tglTeamsSettings.Checked,
With(
{
scpProvisionalEvent: MicrosoftTeams.CreateTeamsMeeting(
scpMyCalendarId,
txtEventTitleSettings.Value,
{
content: rteEventBodySettings.HtmlText,
contentType: "html"
},
"Tokyo Standard Time",
{dateTime: scpStartDateTime},
{dateTime: scpEndDateTime},
true,
"teamsForBusiness"
)
},
If(
IsError(scpProvisionalEvent),
UpdateContext({locCreatingEventError: true}),
If(
IsError(
Office365Outlook.V4CalendarPatchItem(
scpMyCalendarId,
scpProvisionalEvent.id,
txtEventTitleSettings.Value,
scpStartDateTime,
scpEndDateTime,
"(UTC+09:00) Osaka, Sapporo, Tokyo",
{
requiredAttendees: scpRequiredAttendees,
optionalAttendees: scpOptionalAttendees,
resourceAttendees: scpResourceAttendees,
showAs: scpShowAs,
importance: scpImportance,
isReminderOn: tglEventReminder.Checked,
reminderMinutesBeforeStart: numEventReminder.Value,
responseRequested: tglEventResponseRequested.Checked,
body: scpProvisionalEvent.body.content
}
)
),
If(
IsError(
Office365Outlook.CalendarDeleteItemV2(
scpMyCalendarId,
scpProvisionalEvent.id
)
),
false
);
UpdateContext({locCreatingEventError: true}),
UpdateContext({locCreatingEventSuccess: true})
)
)
),
If(
IsError(
Office365Outlook.V4CalendarPostItem(
scpMyCalendarId,
txtEventTitleSettings.Value,
scpStartDateTime,
scpEndDateTime,
"(UTC+09:00) Osaka, Sapporo, Tokyo",
{
requiredAttendees: scpRequiredAttendees,
optionalAttendees: scpOptionalAttendees,
resourceAttendees: scpResourceAttendees,
showAs: scpShowAs,
importance: scpImportance,
isReminderOn: tglEventReminder.Checked,
reminderMinutesBeforeStart: numEventReminder.Value,
responseRequested: tglEventResponseRequested.Checked,
body: rteEventBodySettings.HtmlText
}
)
),
UpdateContext({locCreatingEventError: true}),
UpdateContext({locCreatingEventSuccess: true})
)
)
);
UpdateContext({locIsCreatingEvent: false})
)
)
PressedBorderColor: =RGBA(0, 69, 120, 1)
PressedColor: =RGBA(255, 255, 255, 1)
PressedFill: =RGBA(16, 110, 190, 1)
RadiusBottomLeft: =25
RadiusBottomRight: =25
RadiusTopLeft: =25
RadiusTopRight: =25
Size: =12
TabIndex: |-
=If(
ctnCreateEventPopupBackground.Visible,
gblTabNonFocusable,
gblTabFocusable
)
Text: ="予定作成"
Width: =Parent.Width
- ctnCreateEventPopupBackground:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
DropShadow: =DropShadow.None
Fill: =RGBA(80, 80, 80, 0.3)
Height: =Parent.Height
LayoutAlignItems: =LayoutAlignItems.Center
LayoutDirection: =LayoutDirection.Vertical
LayoutJustifyContent: =LayoutJustifyContent.Center
Visible: |-
=Or(
locIsCreatingEvent,
locCreatingEventError,
locCreatingEventSuccess
)
Width: =Parent.Width
Children:
- ctnCreateEventPopup:
Control: GroupContainer@1.3.0
Variant: AutoLayout
Properties:
AlignInContainer: =AlignInContainer.SetByContainer
DropShadow: =DropShadow.Semilight
Fill: =RGBA(255, 255, 255, 1)
FillPortions: =0
Height: =Parent.Height * 0.2
LayoutDirection: =LayoutDirection.Vertical
PaddingBottom: =20
PaddingLeft: =20
PaddingRight: =20
PaddingTop: =20
Width: =600
Children:
- lblRetryCreatingEventMessage:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
AlignInContainer: =AlignInContainer.Center
FillPortions: =2
Height: =74
LayoutMinHeight: =0
Size: =16
Text: |-
=If(
locCreatingEventError,
"予期しないエラーが発生しました。
正しく予定が作成されなかった場合、時間をおいて再度お試しください。",
locCreatingEventSuccess,
"予定が作成されました!
OKボタンを押して日程検索画面に戻ります。"
)
VerticalAlign: =VerticalAlign.Middle
Visible: |-
=Or(
locCreatingEventError,
locCreatingEventSuccess
)
Width: =Parent.Width
X: =282
Y: =273
- ctnRetryCreatingEventMessageOK:
Control: GroupContainer@1.3.0
Variant: ManualLayout
Properties:
AlignInContainer: =AlignInContainer.Center
LayoutMinHeight: =0
LayoutMinWidth: =0
RadiusBottomLeft: =Self.Width / 2
RadiusBottomRight: =Self.Width / 2
RadiusTopLeft: =Self.Width / 2
RadiusTopRight: =Self.Width / 2
Visible: |-
=Or(
locCreatingEventError,
locCreatingEventSuccess
)
Width: =100
Children:
- btnRetryCreatingEventMessageOK:
Control: Button@0.0.45
Properties:
AccessibleLabel: ="日程検索のローディング画面を閉じるボタン"
BorderRadius: =Self.Height / 2
Height: =Parent.Height
OnSelect: |-
=If(
locCreatingEventError,
UpdateContext({locCreatingEventError: false}),
locCreatingEventSuccess,
UpdateContext({locCreatingEventSuccess: false});
Navigate(
SearchAvailabilityScreen,
ScreenTransition.None
);
Concurrent(
Reset(txtEventTitleSettings),
Reset(tglTeamsSettings),
Reset(rteEventBodySettings),
Reset(cmbEventShowAs),
Reset(cmbEventImportance),
Reset(tglEventReminder),
Reset(numEventReminder),
Reset(tglEventResponseRequested)
)
)
Text: ="OK"
Width: =Parent.Width
- lblCreatingEventProgress:
Control: Text@0.0.51
Properties:
Align: ='TextCanvas.Align'.Center
AlignInContainer: =AlignInContainer.Center
FillPortions: =1
Height: =50
LayoutMinHeight: =0
Size: =16
Text: ="予定作成中..."
VerticalAlign: =VerticalAlign.Middle
Visible: =locIsCreatingEvent
Weight: ='TextCanvas.Weight'.Semibold
Width: =Parent.Width
X: =282
Y: =273
- pbarCreatingEventProgress:
Control: Progress@1.1.34
Properties:
AccessibleLabel: ="予定作成の進捗バー"
FillPortions: =1
Height: =40
Indeterminate: =true
LayoutMinHeight: =0
Thickness: ='Progress.Thickness'.Large
Value: =
Visible: =locIsCreatingEvent
Width: =Parent.Width - Parent.PaddingLeft - Parent.PaddingRight
Screen1 上で右クリックし、「貼り付け」を選択します。
しばらくすると、予定作成画面が作成されたことが分かります。

Screen1の削除
空白のScreen1は不要であるため、ここで削除しておきます。
動作検証と公開
ここまででアプリの導入は完了です。
期待する動作になっているか動作検証を行い、公開作業を実施していきます。
OnStartの実行
ツリービュー内で、Appを右クリックして「OnStart を実行します」を選択します。
アプリの色が変わったことを確認します。
アプリのプレビュー
アプリが正しく動作するかを確認します。
「アプリのプレビュー」ボタンを押した後、アプリを操作してテストを行います。

詳しい使い方については、次回の記事(利用編)をご確認ください。
アプリの公開
アプリの動作が問題なければ、最後に公開ボタンを押してアプリを保存・公開しておきます。

まとめ
今回は、新たに作成した日程調整アプリのサンプルを紹介しました。
デザイン面(UX/UI)にも力を入れたため、アプリを開発する際の参考にしていただければと思います。
また、このアプリで得たノウハウや自作したコントロールなどは、今後の記事で紹介していく予定です。








