JavaScript
Function 테스크를 선택하여 원하는 방식으로 데이터를 처리할 수 있습니다. 다른 테스크와 마찬가지로 테스크 결과값을 활용하거나 함수에 따라 처리된 새로운 테스크 결과값을 만들 수 있습니다. 함수 테스크를 이용하면, 아래와 같은 작업이 가능합니다.

- Merge : 테스크 결과값들을 Merge하여 다음 테스크에 필요한 결과값을 생성합니다.
- Function : 함수 기능을 사용하여 결과값을 변형할 수 있습니다.
Function 테스크는 아래와 같이 활용할 수 있습니다.
- 1.이전 Task의 결과값을 연산하여 새로운 값을 만들거나,
- 2.이전 Task의 결과값이 특정 조건과 일치하는 지를 검사합니다.
자바스크립트 테스크는 변수값 활용 문법이 다른 테스크들과 상이합니다. 전체 스크립트를 JavaScript로 실행시키기 때문에 {{}}문법이 필요하지 않습니다. 예를들어, a 테스크의 결과값을 자바스크립트 테스크에서 활용할시에는 {{a.name}} 이 아닌 a.name으로 접근해야 합니다.
아래 예시에서는 Task A 변수값이 아래와 같다는 가정 하에,
[{"id": "C7", "amount": 200}, {"id": "D9", "amount": 120}, { "id": "G3", "amount": 233}]
- Task A의 결과값 중에서 'amount'를 활용하여
- Function Task인 Task B를 설계하고, 설계에 따른 변수값을 확인해보겠습니다.
이전 Task의 결과값 연산 : Record별 amount x 1100의 값 계산
{{a.amount}} * 1100
Task B 변수값: [220000, 132000, 256300]
{{ }} 내부에 표현식을 중첩하는 것은 안됩니다. 예:
{{a.amount*1100}}
이전 Task의 변수값을 연산 후 조건 검사 : 각 Record별 amount x 1100 의 값이 200,000보다 크면
True
, 작으면 False
반환({{a.amount}} * 1100) > 10,000
Task B 변수값: [true, false, true]
아래는 샘플코드입니다.
이전 테스크의 결과값을 파싱하거나 병합할 수 있습니다. 상황에 맞게 참조용으로 사용하세요.
(예1) 테스크의 결과값이 아래와 같이 이차원 배열로 넘어온 경우에는 아래와 같이 Javascript 를 다음 테스크로 추가합니다.

return b.reduce((prev, cur) => {
return prev.concat(cur.items)
}, [])
//샘플코드
(예2) 두개의 테스크 결과값을 비교하여 일치하는 경우에만 다음 테스크로 보내는 경우입니다.

데이터베이스와 구글시트의 데이터를 비교한 후 일치하는 경우만 다음 테스크(구글시트 삽입)로 보내는 Javascript task 예시코드입니다.
- PostgreSQL 데이터 불러오기
- 구글시트 데이터 불러오기
- [Javascript task] JS 를 이용해서 PostgreSQL 에는 있고 구글시트에는 없는 ID 찾기
- JS 결과 구글시트에 인서트
// PostgreSQL 데이터
const databaseData = a || [];
// 구글시트 데이터
const googleSheetRows = b || [];
// 구글 시트 데이터를 ID 를 기준으로 배열에서 Object로 수정
const googleSheetRowObj = googleSheetRows.reduce(
(previousValue, currectValue) => {
return {
...previousValue,
// 아이디
[currectValue.ColumnA]: currectValue,
};
},
{}
);
// PostgreSQL 에 있지만 구글 시트에 없는 데이터 찾기
const notExistRows = databaseData.filter((value) => {
// PostgreSQL 행별 아이디를 기준으로 구글시트에 값이 있는지 검사
const googleSheetRow = googleSheetRowObj[value.id];
// 만약 값이 없다면?
return !googleSheetRow;
});
// 값 반환
return notExistRows;
Last modified 2mo ago