단계 빌드

이 가이드에서는 사용자가 Google Workspace Studio의 플로우에 추가할 수 있는 단계를 만드는 방법을 설명합니다.

단계는 플로우의 태스크 시퀀스에서 단일 단계입니다. 단계는 플로우를 시작할 수 없습니다.

예를 들어 산술 연산을 실행하는 단계를 생각해 보세요. 사용자에게 두 개의 값과 수학 연산을 요청합니다. 그런 다음 값에 수학 연산을 실행하고 결과를 출력합니다.

숫자 입력 필드 2개와 산술 연산 드롭다운 메뉴가 표시된 Workspace Studio 계산기 단계 카드
그림 1: 사용자가 플로우의 일부로 계산기 단계를 구성합니다.

단계를 빌드하려면 부가기능의 매니페스트 파일에서 단계를 구성하고, Google Workspace 부가기능의 코드에서 애플리케이션 로직을 작성한 후 단계를 배포하고 테스트합니다.

단계 정의

단계를 구성하려면 매니페스트 파일에서 단계를 정의하고 코드에서 애플리케이션 로직을 작성합니다.

매니페스트 파일에서 단계 정의

매니페스트 파일 appsscript.json에서 다음을 실행합니다.

  1. onConfigFunctiononExecuteFunction을 부가기능 코드의 해당 함수 이름으로 설정합니다. 이 예에서 함수는 onConfigCalculateonExecuteCalculate라고 합니다.
    • onConfigFunction은 단계를 설정하고 구성합니다. 필요한 경우 이메일을 보낼 주소와 같이 단계를 실행하는 데 필요한 데이터를 사용자로부터 수집합니다. 이 가이드의 예에서는 두 개의 값과 수학 연산을 지정합니다.
    • onExecuteFunction은 단계를 실행합니다. 사용자로부터 데이터를 수집한 경우 해당 데이터가 이 함수로 전달됩니다. 해당하는 경우 출력을 반환합니다. 이 가이드의 예에서는 수학 계산 결과를 반환합니다.
  2. 필수 입력 및 출력을 설정하여 단계에서 데이터를 수집하고 후속 단계로 보낼 수 있도록 합니다. 이 예에서는 사용자에게 inputs[]에 정의된 두 개의 값과 수학 연산을 요청합니다. outputs[]에 정의된 대로 계산된 결과를 출력합니다.

    입력 및 출력에 대한 자세한 내용은 입력 변수출력 변수를 참고하세요. 플로우가 오류 없이 실행되도록 하려면 입력 변수를 확인하세요.

다음은 계산기 단계의 매니페스트 파일입니다.

JSON

{
  "timeZone": "America/Los_Angeles",
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8",
  "addOns": {
    "common": {
      "name": "Calculator",
      "logoUrl": "https://www.gstatic.com/images/branding/productlogos/calculator_search/v1/web-24dp/logo_calculator_search_color_1x_web_24dp.png",
      "useLocaleFromApp": true
    },
    "flows": {
      "workflowElements": [
        {
          "id": "calculatorDemo",
          "state": "ACTIVE",
          "name": "Calculate",
          "description": "Asks the user for two values and a math operation, then performs the math operation on the values and outputs the result.",
          "workflowAction": {
            "inputs": [
              {
                "id": "value1",
                "description": "value1",
                "cardinality": "SINGLE",
                "dataType": {
                  "basicType": "INTEGER"
                }
              },
              {
                "id": "value2",
                "description": "value2",
                "cardinality": "SINGLE",
                "dataType": {
                  "basicType": "INTEGER"
                }
              },
              {
                "id": "operation",
                "description": "operation",
                "cardinality": "SINGLE",
                "dataType": {
                  "basicType": "STRING"
                }
              }
            ],
            "outputs": [
              {
                "id": "result",
                "description": "Calculated result",
                "cardinality": "SINGLE",
                "dataType": {
                  "basicType": "INTEGER"
                }
              }
            ],
            "onConfigFunction": "onConfigCalculate",
            "onExecuteFunction": "onExecuteCalculate"
          }
        }
      ]
    }
  }
}

다음으로 코드에서 단계를 정의하여 지원 코드를 작성합니다.

코드에서 단계 정의

애플리케이션 코드에서 다음을 실행합니다.

  1. 이 예에서는 onConfigCalculate라고 하는 onConfigFunction을 작성합니다. 사용자가 플로우에 단계를 추가하면 플로우 빌더에서 단계의 측면을 구성할 수 있습니다. 사용자로부터 필요한 정보를 수집하기 위해 onConfigFunction은 구성 카드를 정의합니다.

    카드는 부가기능의 사용자 인터페이스를 구성하는 요소입니다. 카드는 정의된 레이아웃, 버튼과 같은 대화형 UI 요소, 이미지와 같은 리치 미디어를 지원합니다. 카드는 이메일 전송을 위한 이메일 주소와 같이 단계를 실행하는 데 필요한 데이터를 사용자로부터 가져오는 방법입니다.

    onConfigFunction은 카드를 반환합니다. 이 카드는 사용자가 단계의 데이터를 설정하는 UI를 정의합니다. 이 예에서 onConfigFunction은 사용자에게 두 개의 값과 수학 연산을 요청하는 카드를 빌드합니다.

  2. 이 예에서는 onExecuteCalculate라고 하는 onExecuteFunction을 작성합니다. 플로우에서 단계가 실행되면 onExecuteFunction이 실행됩니다. onConfigFunction에 정의된 대로 사용자가 구성 중에 설정한 입력 값은 onExecuteFunction으로 전달됩니다.

    제공된 입력을 사용하여 태스크를 동기적으로 실행하도록 onExecuteFunction을 작성합니다. onExecuteFunction은 플로우의 매니페스트에 정의된 모든 출력을 반환해야 합니다. 그렇지 않으면 오류가 발생합니다.

이 코드 샘플에는 제공된 변수를 단계의 출력으로 구성하고 전송하는 지원 함수 outputVariables가 포함되어 있습니다.

단계를 테스트할 준비가 되었습니다.

다음은 계산기 단계의 코드입니다.

Apps Script

/**
 * Generates and displays a configuration card for the sample calculation step.
 *
 * This function creates a card with input fields for two values and a drop-down
 * for selecting an arithmetic operation.
 *
 * The input fields are configured to let the user select outputs from previous
 * steps as input values using the `hostAppDataSource` property.
 */
function onConfigCalculate() {
  const firstInput = CardService.newTextInput()
  .setFieldName("value1")
  .setTitle("First Value")
  .setHostAppDataSource(
    CardService.newHostAppDataSource()
      .setWorkflowDataSource(
        CardService.newWorkflowDataSource()
          .setIncludeVariables(true)
      )
  );
  const secondInput = CardService.newTextInput()
    .setFieldName("value2")
    .setTitle("Second Value").setHostAppDataSource(
      CardService.newHostAppDataSource()
        .setWorkflowDataSource(
          CardService.newWorkflowDataSource()
            .setIncludeVariables(true)
        )
    );
  const selectionInput = CardService.newSelectionInput()
    .setTitle("operation")
    .setFieldName("operation")
    .setType(CardService.SelectionInputType.DROPDOWN)
    .addItem("+", "+", false)
    .addItem("-", "-", true)
    .addItem("x", "x", false)
    .addItem("/", "/", false);

  const sections = CardService.newCardSection()
    .setHeader("Action_sample: Calculate")
    .setId("section_1")
    .addWidget(firstInput)
    .addWidget(selectionInput)
    .addWidget(secondInput)

  var card = CardService.newCardBuilder()
    .addSection(sections)
    .build();

  return card;
}

/**
* Returns output variables from a step.
*
* This function constructs an object that, when returned, sends the
* provided variable values as output from the current step.
* The variable values are logged to the console for debugging purposes.
*/
function outputVariables(variableDataMap) {
const workflowAction = AddOnsResponseService.newReturnOutputVariablesAction()
  .setVariableDataMap(variableDataMap);

const hostAppAction = AddOnsResponseService.newHostAppAction()
  .setWorkflowAction(workflowAction);

const renderAction = AddOnsResponseService.newRenderActionBuilder()
  .setHostAppAction(hostAppAction)
  .build();

return renderAction;
}

/**
 * Executes the calculation step based on the inputs from a flow event.
 *
 * This function retrieves input values and the operation from the flow event,
 * performs the calculation, and returns the result as an output variable.
 * The function logs the event for debugging purposes.
 */
function onExecuteCalculate(event) {
  console.log("output: " + JSON.stringify(event));
  var calculatedValue = 0;
  var value1 = event.workflow.actionInvocation.inputs["value1"].integerValues[0];
  var value2 = event.workflow.actionInvocation.inputs["value2"].integerValues[0];
  var operation = event.workflow.actionInvocation.inputs["operation"].stringValues[0];

  if (operation == "+") {
    calculatedValue = value1 + value2;
  } else if (operation == "-") {
    calculatedValue = value1 - value2;
  } else if (operation == "x") {
    calculatedValue = value1 * value2;
  } else if (operation == "/") {
    calculatedValue = value1 / value2;
  }

  const variableDataMap = { "result": AddOnsResponseService.newVariableData().addIntegerValue(calculatedValue) };

  return outputVariables(variableDataMap);
}

단계 테스트

단계를 테스트하려면 부가기능의 테스트 배포를 설정하고 플로우에 단계를 추가한 후 플로우를 실행합니다.

  1. 부가기능의 테스트 배포를 설정합니다.

    1. Apps Script 편집기에서 스크립트 프로젝트를 엽니다.
    2. 배포 > 테스트 배포 를 클릭합니다.
    3. 설치 를 클릭합니다.
    4. 하단에서 완료 를 클릭합니다.

    Apps Script 프로젝트를 계정과 공유하여 다른 사용자가 부가기능을 테스트하도록 할 수 있습니다 (수정 액세스 권한이 필요함). 그런 다음 사용자에게 이전 단계를 따르도록 안내합니다.

    설치되면 부가기능을 플로우에서 즉시 사용할 수 있습니다. 부가기능이 표시되기 전에 플로우를 새로고침해야 할 수 있습니다. 부가기능을 사용하기 전에 부가기능을 승인해야 합니다.

    테스트 배포에 대한 자세한 내용은 게시되지 않은 부가기능 설치를 참고하세요.

  2. 플로우를 엽니다.

  3. 단계를 포함하는 플로우를 만듭니다.

    1. 새 플로우를 클릭합니다.
    2. 플로우가 시작되는 방식을 선택합니다. 단계를 테스트할 때는 이메일 전송과 같이 직접 시작할 수 있는 시작 조건을 선택하는 것이 좋습니다. 단계에 입력 변수가 필요한 경우 시작 조건 출력의 일부로 입력 변수를 구성합니다.
    3. 단계 추가 를 클릭합니다. 빌드하거나 업데이트한 단계(계산)를 선택합니다.
    4. 단계를 구성합니다. 계산 단계의 경우 두 개의 값과 수학 연산을 선택합니다. 단계는 자동으로 저장됩니다.
    5. 단계의 출력을 테스트하려면 다른 단계를 추가합니다. 예를 들어 이메일 메시지에 출력을 추가하려면 Gmail의 메시지 보내기 단계를 추가하면 됩니다. 메시지에서 변수를 클릭하고 단계의 출력을 선택합니다. 계산 단계의 경우 변수 > 2단계: 계산된 결과 > 계산된 결과를 선택합니다. 변수가 메시지 필드에 칩으로 표시됩니다.
    6. 사용 설정 을 클릭합니다. 워크플로를 실행할 준비가 되었습니다.
  4. 플로우의 시작 조건을 설정하여 플로우를 실행합니다. 예를 들어 이메일을 수신할 때 플로우가 시작되는 경우 이메일을 직접 보냅니다.

  5. 플로우가 예상대로 실행되는지 확인합니다. 플로우 빌더의 활동 탭을 방문하여 로그를 확인합니다. 활동 탭에서 커스텀 로그를 만드는 방법을 알아보려면 활동 로그를 참고하세요.