본문 바로가기
PC/Programming

[Power automate desktop] 지정된 시각에 작동하도록 flow 짜기

by dragom 2021. 3. 14.
반응형

▷ 버튼 클릭만으로 원하는 동작을 하는 flow를 만들었지만,

정해진 시각마다 알아서 반복적으로 동작하도록 코드를 짜보았다.

 

먼저 현재 시각은 Datetime -> Get current date and time 액션을 통해 변수에 저장할 수 있다.

특정 시각에만 동작하게 하려면 이렇게 받은 현재 시각을 text variable로 변경하고
Text -> Get subtext 액션을 통해 특정 위치의 문자를 읽어 이를 "10:00:00" 과 같은 텍스트와 비교시켜 구현할 수 있다.
( 시간:분 부분만 읽어와 "10:00"와 비교하거나...)

나는 시간을 추후에도 수식에 넣어 사용하기 위해 2021-03-13 PM 10:59:58 를 20210313225958 와 같은 숫자로 변환하도록 subflow를 구성하였다.

"get_currenttime_as_number" subflow

2번 Text -> Convert datetime to text 액션에서 Format to use: Custom 사용 시 한번에 원하는 format으로 받을 수 있겠지만,

power automate desktop은 이럴 때 내가 원하는 regular expression을 어떻게 구성할 수 있는지 설명이 거의 없어 
어쩔 수 없이 복잡한 방법을 사용하였다.

Standard format 중 Sortable datetime format을 사용하면 2021-03-13T22:59:58 의 형태로 텍스트를 생성할 수 있다.
날짜T시간의 형태이다.

이렇게 생성된 텍스트를 3~5번에서 Text -> Split text 액션을 사용하여 T와 -와 :로 전부 잘라 리스트화 시키고
6번의 Variables -> Merge lists 액션을 이용해 하나의 리스트로 만든 뒤
7번 Text -> Join text 액션으로 모두 연결된 하나의 텍스트로 만든다. (20210313225958)

*** 7번에서 seperate를 None으로 해도 Spacex1으로 표시되는데 이것은 power automate의 오류로 보인다.

이 subflow를 main flow의 while loop의 시작에 배치해 놓으면 설정한 조건에 맞는 시각에만 동작한다.

참고로 계속 반복되는 while True는 위와 같은 설정으로 만들었다.

2번에서 아까 만든 subflow를 작동시켜 20210313225958 와 같은 현재 시각을 생성한다.

 

4~12는 특정 시간동안 동작하지 않도록 하기 위한 조건문이다.

4번에서 8번째 자리(시작이 0번째 자리)부터 4개의 글자로 자른다.(2259)

5번째에서 2259 문자를 숫자로 변환한다.

6~12번째는 내가 사용할 목적에 맞도록 은행 점검 시간에 여유를 주고 특정 시간동안 동작하지 않도록 하기 위한 함수이다.
23:30보다 늦거나 00:30보다 빠른 경우 10분 기다린 뒤 Next loop 액션으로 loop의 처음으로 돌아간다.

 

13~14번에서 문자열 20210313225958 의  분부분 (59)를 자르고 숫자로 변경한다.

15~20에서 현재 분이 동작하기 원하는 분과 일치하면 while True 문이 종료되고 subflow가 끝나도록 했다.
조건식에 일치하지 않은 경우 50초 쉬었다가 현재 loop가 종료되고 다시 loop의 처음으로 돌아간다.

If를 두번 써서 x분과 같거나 크고 x+1분과 작은 때를 고르도록 한 이유는
추후 +1이 아니라 다른 duration이 필요할 수 있을 듯하여 이렇게 작성하였다.

참고로 16번줄에서 변수에 덧셈을 하는 것은 아래와 같이 구현할 수 있다.

%변수이름+숫자%

이러한 구문도 trial and fail로 여러번 시도 끝에 찾았다.

 

 

어디 제대로 된 document라도 찾았다면 이렇게 불필요하도록 복잡하고 오랜시간 걸려서 만들지도 않았을텐데
내가 못찾은 것인지 참 아쉽다.

 


글 작성하면서 아무래도 내가 너무 멍청하게 구현 했다는 생각이 자꾸 들어 
혹시나하고 엑셀에서 사용하던 format과 비슷하게 시도하여 성공했다.

"get_currenttime_as_number" subflow를 아예 없애고 단 두개의 액션으로 치환하였다.

해보니 진짜 Custom format으로도 동일한 text 생성이 성공하였다.

에휴...

반응형

댓글