클라우드 흐름에 대한 식 요리책

이 문서에서는 Power Automate 클라우드 흐름의 일반적인 시나리오에 사용할 준비가 된 30가지 식 패턴을 설명합니다. 흐름에서 이러한 패턴을 복사, 조정 및 사용할 수 있습니다.

메모

이러한 식은 모든 Power Automate 클라우드 흐름 라이선스 계층에서 작동합니다. 워크플로 식 함수에서 전체 함수 참조를 찾습니다.

텍스트 작업

1. 대문자 또는 소문자로 변환

시나리오: 비교 또는 스토리지 전에 사용자 입력을 정규화합니다.

식: toUpper(variables('input')) 또는 toLower(variables('input'))

예제: toLower('John.Smith@Contoso.COM') 반환 john.smith@contoso.com

중요합니다

toUpper() 는 비교에 사용되는 경우 대/소문자를 구분합니다. 사용하는 toUpper(A) = B경우 양쪽에 적용해야 합니다. toUpper(A) = B 는 B가 대/소문자를 혼합하면 실패합니다.

2. 부분 문자열 추출(왼쪽, 오른쪽, 중간)

시나리오: 텍스트 값에서 특정 부분을 끌어냅니다. 첫 번째 N 문자, 마지막 N 또는 중간에서 범위를 가져옵니다.

식:

  • 왼쪽: substring(variables('text'), 0, 5)
  • 올바른 코드: substring(variables('text'), sub(length(variables('text')), 5), 5)
  • 중간: substring(variables('text'), 3, 4)

예제: substring('Invoice-2026-0042', 8, 4) 반환 2026

Tip

두 번째 매개 변수는 시작 인덱스(0부터 시작)이며, 세 번째 매개 변수는 끝 인덱스가 아닌 길이입니다. 가 아니라 >를 반환합니다.

3. 텍스트 바꾸기

시나리오: 텍스트 값을 정리하거나 변환합니다. 문자를 제거하고 구분 기호를 바꾸고 서식을 수정합니다.

식: replace(variables('input'), 'old', 'new')

예제: replace('2026/03/18', '/', '-') 반환 2026-03-18

메모

replace()은 대/소문자를 구분합니다. replace('Hello', 'hello', 'Hi') 는 변경되지 않은 상태로 반환 Hello 됩니다. 필요한 경우 먼저 일반적인 사례로 변환합니다.

4. 문자열을 배열로 분할

시나리오: 구분된 값(CSV, 세미콜론으로 구분된 전자 메일)을 반복할 개별 항목으로 분할합니다.

식: split(variables('input'), ',')

예제: split('alice@contoso.com,bob@contoso.com,carol@contoso.com', ',') 반환 ["alice@contoso.com","bob@contoso.com","carol@contoso.com"]

Tip

구분 기호 뒤에 공백이 유지됩니다. split('a, b, c', ',') 는 선행 공백을 사용하여 반환됩니다 ["a"," b"," c"] . 나중에 선택 작업의 각 항목에 사용합니다 trim() .

5. 줄 바꿈과 연결(전자 메일의 경우)

시나리오: 전자 메일 또는 Teams 알림에 대한 여러 줄 메시지 본문을 작성합니다.

식: concat('Line 1', decodeUriComponent('%0A'), 'Line 2')

Example: 줄 바꿈에는 decodeUriComponent('%0A'), Windows 스타일 줄 바꿈에는 decodeUriComponent('%0D%0A') 사용합니다.

중요합니다

식에서 직접 사용하면 \n 줄 바꿈이 생성되지 않습니다. 리터럴 문자를 \n출력합니다. 항상 이 decodeUriComponent 방법을 사용하거나 출력이 HTML인 경우 사용합니다 <br> .

6. 문자열에 텍스트가 포함되어 있는지 확인

시나리오: 제목 줄, 전자 메일 본문 또는 필드에 키워드가 포함되어 있는지 여부에 따라 흐름을 라우팅합니다.

식: contains(toLower(triggerBody()?['subject']), 'urgent')

예제: contains('Project Alpha Review', 'Alpha') 반환 true

메모

contains()은 대/소문자를 구분합니다. 대/소문자를 구분하지 않는 일치toLower()를 위해 항상 건초 스택과 바늘 contains(toLower(value), toLower(search)) 을 모두 래핑합니다.

날짜 및 시간

7. 특정 형식으로 현재 날짜/시간 가져오기

시나리오: 파일 이름, 로그 항목 또는 전자 메일에 현재 날짜 및 시간을 스탬프합니다.

식: formatDateTime(utcNow(), 'yyyy-MM-dd HH:mm')

예: 반환 2026-03-18 14:30 (UTC). 현지 시간에 사용합니다 convertTimeZone() .

Tip

utcNow() 는 항상 UTC입니다. 현지 시간에는 .를 사용하여 convertTimeZone(utcNow(), 'UTC', 'Eastern Standard Time', 'yyyy-MM-dd HH:mm')연결합니다.

8. 날짜에서 일 추가 또는 빼기

시나리오: 오늘을 기준으로 기한, 만료 또는 미리 알림 날짜를 계산합니다.

식: addDays(utcNow(), 7) 또는 addDays(utcNow(), -30)

예: 오늘이면 다음을 2026-03-18addDays(utcNow(), 7) 반환합니다.2026-03-25T...Z

메모

addDays() 또한 소수 값을 허용하지만 addHours()addMinutes() 하위 일 오프셋의 경우 더 명확합니다. 의미addDays(utcNow(), 0.5)는 사용하지 addHours(utcNow(), 12) 마세요.

9. 문자열을 날짜로 변환(구문 분석)

시나리오: 텍스트 필드에는 날짜와 같은 03/18/2026 날짜가 포함되어 있으므로 날짜 함수에서 사용해야 합니다.

식: parseDateTime(variables('dateString'), 'en-US')

예: parseDateTime('03/18/2026', 'en-US') 적절한 datetime 값을 반환합니다.

중요합니다

로캘 매개 변수가 없으면 구문 분석이 흐름의 국가별 설정에 따라 달라지고 월/일로 교환할 수 있습니다. 4월 3일과 3월 4일로 해석되지 않도록 03/04/2026 항상 로캘을 명시적으로 지정합니다.

10. 요일 가져오기

시나리오: 평일과 주말에 다른 논리를 실행하거나 "월요일 보고서"를 생성합니다.

식: dayOfWeek(utcNow())

예: 0 일요일, 1 월요일, 토요일 6 을 반환합니다.

Tip

일요일은 0그렇지 않습니다 7. 주말 수표에 사용합니다 or(equals(dayOfWeek(...), 0), equals(dayOfWeek(...), 6)) . 토요일을 잡는 것과 같은 dayOfWeek(utcNow()) > 5 조건은 일요일을 놓친다.

11. 두 날짜 사이의 차이를 계산합니다.

시나리오: 요청 날짜와 완료 날짜 사이에 경과된 일 수를 결정합니다.

식: div(sub(ticks(variables('endDate')), ticks(variables('startDate'))), 864000000000)

예: start가 2026-03-01 있고 end가 2026-03-18면 .를 반환합니다 17.

메모

기본 제공 dateDiff() 함수는 없습니다. 틱 접근 방식을 사용해야 합니다. 수수 864000000000 는 틱을 일로 변환합니다. 시간, 사용 36000000000; 분, 사용 600000000.

12. 표시 날짜 서식 지정

시나리오: 날짜/시간 값을 전자 메일 또는 보고서의 사람이 읽을 수 있는 형식으로 변환합니다.

식: formatDateTime(variables('myDate'), 'MMMM dd, yyyy') 또는 formatDateTime(variables('myDate'), 'MM/dd/yyyy')

예제: formatDateTime('2026-03-18T14:30:00Z', 'MMMM dd, yyyy') 반환 March 18, 2026

중요합니다

MM 월, mm 분입니다. formatDateTime(value, 'mm/DD/yyyy') 는 .가 30/18/2026 아닌 (분 및 일)을 생성합니다 03/18/2026. 월의 일(소문자)을 사용합니다 dd .

배열 및 컬렉션

13. 조건별로 배열 필터링

시나리오: 특정 기준과 일치하는 배열에서 항목만 가져옵니다.

식: 다음과 같은 배열 필터 동작 @item()?['Status'] 사용 'Active'

예: 입력 [{Name:'A', Status:'Active'}, {Name:'B', Status:'Closed'}] 반환 [{Name:'A', Status:'Active'}]

메모

-style 필터 식을 인라인으로 where사용할 수 없습니다. 필터 배열 동작(식 아님)을 사용합니다. 식 기반 필터링의 경우 필터 배열의 고급 모드에서 사용합니다 @equals(item()?['Status'], 'Active') .

14. 배열에서 첫 번째 또는 마지막 항목 가져오기

시나리오: 목록에서 가장 최근 레코드 또는 첫 번째 일치 항목을 검색합니다.

식: first(variables('myArray')) 또는 last(variables('myArray'))

Example: first(body('Get_items')?['value']) SharePoint 쿼리에서 첫 번째 항목을 반환합니다.

Tip

first() 빈 배열에서 오류가 아니라 반환 null됩니다. 항상 null 검사를 if(empty(variables('myArray')), null, first(variables('myArray')))따릅니다. .

15. 배열의 항목 개수

시나리오: 쿼리가 반환된 결과 수를 확인하거나 목록에 충분한 항목이 있는지 확인합니다.

식: length(variables('myArray'))

Example: length(body('Get_items')?['value']) SharePoint list 쿼리의 항목 수를 반환합니다.

메모

length() 는 배열과 문자열 모두에서 작동합니다. length('hello') 반환합니다 5 (문자 수). 배열처럼 보이는 문자열이 아닌 배열을 전달해야 합니다.

16. 배열에서 쉼표로 구분된 문자열 만들기(조인)

시나리오: 이름, 전자 메일 또는 ID 목록을 표시 또는 API 호출을 위해 구분된 단일 문자열로 변환합니다.

식: join(variables('myArray'), ', ')

예제: join(createArray('Alice', 'Bob', 'Carol'), '; ') 반환 Alice; Bob; Carol

Tip

join() 는 문자열 배열에서 작동합니다. 배열에 개체가 포함된 경우 먼저 선택 작업을 사용하여 원하는 필드를 추출한 다음 결과를 조인합니다.

17. 배열에 값이 포함되어 있는지 확인

시나리오: 계속하기 전에 특정 항목이 목록에 있는지 확인합니다.

식: contains(variables('myArray'), 'searchValue')

예제: contains(createArray('North', 'South', 'East', 'West'), 'East') 반환 true

메모

개체 contains() 배열의 경우 속성 값이 아닌 전체 개체를 확인합니다. 일치하는 속성이 있는 개체가 있는지 확인하려면 배열 필터 작업을 사용한 다음 결과를 확인 length() 합니다.

JSON 및 개체

18. JSON 문자열 구문 분석

시나리오: HTTP 작업 또는 사용자 지정 커넥터는 구조화된 데이터로 작업해야 하는 JSON 문자열을 반환합니다.

식: json(body('HTTP'))

예: json('{"name":"Alice","age":30}') 을 사용하여 액세스할 수 있는 개체를 ?['name']반환합니다.

중요합니다

두 번 구문 분석하지 마세요. 작업이 이미 구문 분석된 JSON을 반환하는 경우(대부분의 커넥터 작업이 수행) 다시 래핑 json() 하면 오류가 발생합니다. 이미 개체인 작업 출력이 아닌 원시 문자열 응답에만 사용합니다 json() .

19. JSON에서 중첩 속성 가져오기

시나리오: JSON 응답 내의 값에 액세스합니다(예: ) response.data.items[0].name.

식: body('HTTP')?['data']?['items']?[0]?['name']

예: For {"data":{"items":[{"name":"Widget"}]}}, 반환 .Widget

중요합니다

(안전한 탐색)을 ? 잊지 마세요. body('HTTP')['data']['items'] 는 수준이 null인 경우 오류를 throw합니다. 항상 안전하게 트래버스하는 데 사용합니다 ?['key'] . 각 ? 항목은 부모가 누락된 경우 실패하는 대신 null을 반환합니다.

20. 값에서 JSON 개체 만들기

시나리오: 흐름 변수 및 동적 콘텐츠에서 HTTP 작업에 대한 요청 본문을 빌드합니다.

식: json(concat('{"name":"', variables('name'), '","status":"', variables('status'), '"}'))

예: name=Alice 및 status=Active이면 .{"name":"Alice","status":"Active"}

Tip

변수에 따옴표나 특수 문자가 포함된 경우 JSON의 형식이 잘못되었습니다. 강력한 생성의 경우 Compose 작업과 함께 createObject('name', variables('name'), 'status', variables('status')) 작성 작업을 사용하거나 작성 작업에서 직접 작성합니다.

21. 개체를 문자열로 변환

시나리오: JSON 개체를 텍스트 필드에 기록하거나 구조화된 데이터를 문자열 매개 변수로 전달합니다.

식: string(variables('myObject'))

예: string(json('{"a":1}')) 문자열로 반환 {"a":1} 합니다.

메모

string() 배열 또는 개체에서 압축 JSON(예쁜 인쇄 없음)을 생성합니다. 기본 제공 prettyPrint()이 없습니다. 압축 JSON을 적용하거나 서식이 지정된 텍스트를 수동으로 작성합니다.

22. null 또는 빈 값을 안전하게 처리

시나리오: 필드가 null이거나 비어 있거나 완전히 누락될 수 있는 경우 오류를 방지합니다.

식: coalesce(triggerBody()?['optionalField'], 'default value')

예: null이면 optionalField .를 반환합니다 'default value'. 값이 있는 경우 해당 값을 반환합니다.

중요합니다

coalesce() 은 빈 문자열이 null아니라 핸들만 처리합니다. 빈 문자열의 경우 다음 조건 if(empty(triggerBody()?['field']), 'default', triggerBody()?['field'])과 결합합니다. 함수는 empty() null 및 빈 문자열 ''모두에 대해 true를 반환합니다.

숫자 및 수학

23. 숫자 반올림

시나리오: 소수 자릿수가 고정된 백분율 또는 통화 값을 표시합니다.

식: formatNumber(variables('value'), 'N2') (표시용) 또는 div(mul(variables('value'), 100), 100) (잘림용)

예: formatNumber(3.14159, 'N2') 문자열로 반환 3.14 합니다.

메모

formatNumber() 는 숫자가 아닌 문자열을 반환합니다. 반올림된 값에 대해 더 많은 수학을 수행해야 하는 경우 다시 float(formatNumber(variables('value'), 'N2'))구문 분석합니다.

24. 문자열을 숫자로 변환(및 뒤로)

시나리오: 폼이나 전자 메일은 숫자를 텍스트로 제공하므로 수학을 수행해야 합니다.

식: int(variables('textNumber')) 또는 float(variables('textNumber')) 및 string(variables('numericValue'))

예: int('42') 반환 .42 float('3.14')은(는) 3.14을(를) 반환합니다. string(42)은(는) '42'을(를) 반환합니다.

중요합니다

int() 10진수 문자열에서 오류가 발생합니다. 잘리지 않습니다. 변수에 10진수를 포함할 수 있는 경우 먼저 float()다음을 사용합니다int(float(variables('input'))). 같은 int('3.14')상수 값을 사용하면 런타임이 아닌 저장 시간(InvalidTemplate)에 오류가 발생합니다.

25. 백분율 계산

시나리오: 한 값이 다른 값의 분수(예: 완료율, 사용률)를 표시합니다.

식: mul(div(float(variables('part')), float(variables('total'))), 100)

예: part=75 및 total=200이면 .37.5

중요합니다

정수 나누기 잘립니다. div(75, 200) 는 둘 다 정수이기 때문에 반환 0 됩니다. 항상 먼저 float로 변환: div(float(75), float(200)) 반환합니다 0.375.

조건부 및 논리

26. 식의 If/then/else

시나리오: 흐름에 조건 동작을 추가하지 않고 조건에 따라 다른 값을 반환합니다.

식: if(equals(variables('status'), 'Approved'), 'Proceed', 'Wait')

예: status가면 Approved.를 반환합니다 Proceed. 그렇지 않으면 Wait를 반환합니다.

메모

함수는 if() 연산자를 > 직접 지원하지 <않습니다. 도우미 함수 사용: if(greater(variables('count'), 10), 'Over', 'Under'). 사용 가능한 비교: equals(), greater(), less()greaterOrEquals(), lessOrEquals().

27. Coalesce(첫 번째 비 null 값)

시나리오: 여러 필드를 시도하고 값이 있는 첫 번째 필드(예: 기본 설정 이름, 표시 이름, 전자 메일)를 사용합니다.

식: coalesce(triggerBody()?['preferredName'], triggerBody()?['displayName'], triggerBody()?['email'], 'Unknown')

예: preferredName이 null이고 displayName이'Alice'면 .Alice

Tip

coalesce()는 문자열을 null 건너뛰지만 빈 문자열은 아닙니다.'' 빈 문자열은 유효한 null이 아닌 값입니다. 빈 문자열도 건너뛰 coalesce(if(empty(A), null, A), if(empty(B), null, B), 'default')어야 하는 경우 도우미와 결합합니다.

28. 값이 null인지 비어 있는지 확인

시나리오: 처리하기 전에 필요한 필드에 사용 가능한 값이 있는지 확인합니다.

식: empty(variables('input'))

예: empty('') 반환 .true empty(null)은(는) true을(를) 반환합니다. empty('hello')은(는) false을(를) 반환합니다.

중요합니다

empty() 는 숫자에서 작동하지 않습니다. empty(0) 는 오류를 throw합니다. 숫자의 경우 먼저 유형을 사용 equals(variables('num'), null) 하거나 확인합니다.

29. 날짜 비교(날짜 A 이후 날짜 B?)

시나리오: 기한이 지났는지 또는 한 이벤트가 다른 이벤트 이전에 발생했는지 확인합니다.

식: greater(ticks(variables('dateA')), ticks(variables('dateB')))

예: greater(ticks('2026-03-18'), ticks('2026-03-15')) 반환 true (3월 18일은 3월 15일 이후).

중요합니다

날짜 문자열을 직접 greater('2026-03-18', '2026-03-15') 비교하면 사전적으로 정렬되므로 ISO 형식(YYYY-MM-DD)에 대해 작동합니다. 그러나 다른 형식에 대해서는 실패합니다. greater('03/18/2026', '12/01/2025')가 false0<반환됩니다.1 항상 신뢰할 수 있는 날짜 비교에 사용합니다 ticks() .

30. 부울 논리(AND/OR 조건)

시나리오: 여러 조건을 단일 식으로 결합합니다(예: 승인된 AND 금액 > 1000).

식: and(equals(variables('status'), 'Approved'), greater(variables('amount'), 1000))

예: 상태가 같고 양이 1000보다 큰 경우에만 반환 true 합니다 Approved .

메모

구문을 사용하여and/or연결할 &&/|| 수 없습니다. 항상 함수 형식을 사용합니다. 복잡한 논리의 경우 다음을 중첩합니다 or(and(A, B), and(C, D)). 심층 중첩으로 가독성이 저하됩니다. 대신 여러 행이 있는 조건 동작을 사용하는 것이 좋습니다.

빠른 참조 카드

작업 식
대문자 toUpper(value)
소문자 toLower(value)
Substring substring(value, start, length)
대체 replace(value, old, new)
분할 split(value, delimiter)
포함(텍스트) contains(toLower(value), toLower(search))
이제(서식 지정) formatDateTime(utcNow(), 'yyyy-MM-dd')
일 추가 addDays(date, count)
요일 dayOfWeek(date) (0=일)
일 수 div(sub(ticks(end), ticks(start)), 864000000000)
첫 번째 항목 first(array)
마지막 항목 last(array)
개수 length(array)
가입 join(array, delimiter)
JSON 구문 분석 json(stringValue)
Safe 속성 object?['key']
Null 대체 coalesce(value, default)
비어 있음 empty(value)
If/else if(condition, trueVal, falseVal)
날짜 비교 greater(ticks(dateA), ticks(dateB))
문자열에서 Int int(stringValue)
문자열에서 부동 소수 자릿수 float(stringValue)
AND and(condA, condB)
또는 or(condA, condB)

참고: 작성자가 AI의 도움을 받아 이 문서를 만들었습니다. 자세한 정보