@actionsflow/trigger-google_form 中文文档教程

发布于 3 年前 浏览 8 项目主页 更新于 2 年前

@actionsflow/trigger-google_form

这是 Actionsflowgoogle_form 触发器>。 Google 表单中的任何新响应都将触发触发器。

这是一个官方触发器,您不需要手动安装它。

在 Github 上查看触发器

Prerequisites

你应该 在 google form 更多->脚本编辑器中创建自定义脚本

在谷歌表单创建自定义脚本

  1. paste the following script to the editor, change the WEBHOOK_URL to yours.
   var WEBHOOK_URL =
     "https://webhook.actionsflow.workers.dev/<owner>/<repo>/<workflow-file-name>/google_form?__token=<your-github-personal-token>";

   function onFormSubmit(e) {
     var response = e.response;
     var source = e.source;
     var itemResponses = response.getItemResponses();
     var definition = {
       title: source.getTitle(),
       fields: [],
     };
     const formItems = source.getItems();
     for (var i = 0; i < formItems.length; i++) {
       const formItem = formItems[i];
       definition.fields.push({
         id: formItem.getId(),
         title: formItem.getTitle(),
         type: formItem.getType(),
         index: formItem.getIndex(),
       });
     }

     var answers = [];
     for (var j = 0; j < itemResponses.length; j++) {
       var itemResponse = itemResponses[j];
       const formItem = itemResponse.getItem();
       answers.push({
         response: itemResponse.getResponse(),
         field: {
           id: formItem.getId(),
           title: formItem.getTitle(),
           type: formItem.getType(),
           index: formItem.getIndex(),
         },
       });
     }
     var webhookPayload = {
       event_id: response.getId(),
       event_type: "form_response",
       form_response: {
         form_id: source.getId(),
         email: response.getRespondentEmail(),
         submitted_at: response.getTimestamp().toISOString(),
         definition: definition,
         answers: answers,
       },
     };
     var options = {
       method: "post",
       contentType: "application/json",
       payload: JSON.stringify(webhookPayload),
     };
     UrlFetchApp.fetch(WEBHOOK_URL, options);
   }
  1. Add a trigger by selecting Current project's triggers in the Edit menu, and creating a new trigger using the settings given below. Save it.

添加触发器

添加触发器

Usage

on:
  google_form:

Options

没有什么可以指定的。 您可以使用Actionsflow 触发器的常规配置 进行更多自定义。

Outputs

此触发器的输出将是 aws sns 消息正文的正文,您可以看到它 此处

一个输出示例:

{
  "event_id": "2_ABaOnud0S_zjpIn9oGqBpmY65p_NsuiBSqvdwPlapEig0GM4EPdeStVqalzlAb3AEovoWgA",
  "event_type": "form_response",
  "form_response": {
    "form_id": "118EoaS7eK2qvWv8tQy3xLKa-MGgRAizQvO5PKVArWG4",
    "email": "",
    "submitted_at": "2020-09-27T07:54:30.661Z",
    "definition": {
      "title": "test formt",
      "fields": [
        {
          "id": 440714388,
          "title": "question 1",
          "type": "MULTIPLE_CHOICE",
          "index": 0
        },
        {
          "id": 886865551,
          "title": "name",
          "type": "TEXT",
          "index": 1
        }
      ]
    },
    "answers": [
      {
        "response": "Option 2",
        "field": {
          "id": 440714388,
          "title": "question 1",
          "type": "MULTIPLE_CHOICE",
          "index": 0
        }
      },
      {
        "response": "test",
        "field": {
          "id": 886865551,
          "title": "name",
          "type": "TEXT",
          "index": 1
        }
      }
    ]
  },
  "answers_map": {
    "question 1": "Option 2",
    "name": "test"
  }
}

您可以像这样使用输出:

on:
  google_form:
jobs:
  print:
    name: Print
    runs-on: ubuntu-latest
    steps:
      - name: Print Outputs
        env:
          answer: ${{ toJSON(on.google_form.outputs.answers_map) }}
        run: |
          echo answer: $answer

@actionsflow/trigger-google_form

This is a google_form trigger of Actionsflow. Any new response in Google Form will trigger the trigger.

This is an official trigger, you don't need to install it manually.

View trigger on Github

Prerequisites

You should Create a custom script at google form More->Script Editor

Create a custom script at google form

  1. paste the following script to the editor, change the WEBHOOK_URL to yours.
   var WEBHOOK_URL =
     "https://webhook.actionsflow.workers.dev/<owner>/<repo>/<workflow-file-name>/google_form?__token=<your-github-personal-token>";

   function onFormSubmit(e) {
     var response = e.response;
     var source = e.source;
     var itemResponses = response.getItemResponses();
     var definition = {
       title: source.getTitle(),
       fields: [],
     };
     const formItems = source.getItems();
     for (var i = 0; i < formItems.length; i++) {
       const formItem = formItems[i];
       definition.fields.push({
         id: formItem.getId(),
         title: formItem.getTitle(),
         type: formItem.getType(),
         index: formItem.getIndex(),
       });
     }

     var answers = [];
     for (var j = 0; j < itemResponses.length; j++) {
       var itemResponse = itemResponses[j];
       const formItem = itemResponse.getItem();
       answers.push({
         response: itemResponse.getResponse(),
         field: {
           id: formItem.getId(),
           title: formItem.getTitle(),
           type: formItem.getType(),
           index: formItem.getIndex(),
         },
       });
     }
     var webhookPayload = {
       event_id: response.getId(),
       event_type: "form_response",
       form_response: {
         form_id: source.getId(),
         email: response.getRespondentEmail(),
         submitted_at: response.getTimestamp().toISOString(),
         definition: definition,
         answers: answers,
       },
     };
     var options = {
       method: "post",
       contentType: "application/json",
       payload: JSON.stringify(webhookPayload),
     };
     UrlFetchApp.fetch(WEBHOOK_URL, options);
   }
  1. Add a trigger by selecting Current project's triggers in the Edit menu, and creating a new trigger using the settings given below. Save it.

Add a trigger

Add a trigger

Usage

on:
  google_form:

Options

There is nothing can be specified. You can use General Config for Actionsflow Trigger for more customization.

Outputs

This trigger's outputs will be the body of the aws sns message body, you can see it here

An outputs example:

{
  "event_id": "2_ABaOnud0S_zjpIn9oGqBpmY65p_NsuiBSqvdwPlapEig0GM4EPdeStVqalzlAb3AEovoWgA",
  "event_type": "form_response",
  "form_response": {
    "form_id": "118EoaS7eK2qvWv8tQy3xLKa-MGgRAizQvO5PKVArWG4",
    "email": "",
    "submitted_at": "2020-09-27T07:54:30.661Z",
    "definition": {
      "title": "test formt",
      "fields": [
        {
          "id": 440714388,
          "title": "question 1",
          "type": "MULTIPLE_CHOICE",
          "index": 0
        },
        {
          "id": 886865551,
          "title": "name",
          "type": "TEXT",
          "index": 1
        }
      ]
    },
    "answers": [
      {
        "response": "Option 2",
        "field": {
          "id": 440714388,
          "title": "question 1",
          "type": "MULTIPLE_CHOICE",
          "index": 0
        }
      },
      {
        "response": "test",
        "field": {
          "id": 886865551,
          "title": "name",
          "type": "TEXT",
          "index": 1
        }
      }
    ]
  },
  "answers_map": {
    "question 1": "Option 2",
    "name": "test"
  }
}

You can use the outputs like this:

on:
  google_form:
jobs:
  print:
    name: Print
    runs-on: ubuntu-latest
    steps:
      - name: Print Outputs
        env:
          answer: ${{ toJSON(on.google_form.outputs.answers_map) }}
        run: |
          echo answer: $answer
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文