JavaScript

JavaScript 테스크 활용법

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

  • Merge : 테스크 결과값들을 Merge하여 다음 테스크에 필요한 결과값을 생성합니다.

  • Function : 함수 기능을 사용하여 결과값을 변형할 수 있습니다.

  • Filter

  • Custom logic

Function 테스크는 아래와 같이 활용할 수 있습니다.

  1. 이전 Task의 결과값을 연산하여 새로운 값을 만들거나,

  2. 이전 Task의 결과값이 특정 조건과 일치하는 지를 검사합니다.

Javascript 작성시 return 등을 사용하여 값(output data)을 반환하도록 해주세요.

변수값 활용법

자바스크립트 테스크는 변수값 활용 문법이 다른 테스크들과 상이합니다. 전체 스크립트를 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;

예시 3

구글시트, 노션, DB 등에서 넘어온 데이터 중 특정 조건을 만족하는 레코드의 갯수를 슬랙으로 반환하는 자바스크립트 예시

전체 데이터를 읽어와서 그 중에사 '일정조율' 이라고 표시된 레코드의 전체 숫자를 {{b}} 로 내려줍니다.

아래의 자바스크립트를 복사해서 수정해보세요.

// 구글시트 로우
const rows = a;

return a.reduce((p, c) => {
  return p + (c.ColumnA === "일정조율" ? 1 : 0);
}, 0);

Last updated