如何通过Google表单审查问题的答案?

时间:2019-06-19 20:26:52

标签: javascript google-apps-script

我正在使用带有不和谐的Webhook在不和谐频道中显示结果。我的表单使用匹配的表达式登录。此登录名包含电子邮件。我希望检查此电子邮件或将其从不和谐频道的输出中删除,因为我不希望人们看到他们的电子邮件是什么。我对Google Apps脚本了解甚少,因此我确实需要帮助。如果您知道任何Javascript,希望您能提供帮助,因为Google Apps Script高度基于javascript。

我尝试使用if语句来识别问题的内容,如果问题内容为“电子邮件地址:”,那么答案将更改为空白。这没用。

function onSubmit(e) {

    var POST_URL = "WEBHOOK";
    var form = FormApp.getActiveForm();
    var allResponses = form.getResponses();
    var latestResponse = allResponses[allResponses.length - 1];
    var response = latestResponse.getItemResponses();
    var items = [];

    for (var i = 0; i < response.length; i++) {
        var question = response[i].getItem().getTitle();
        var answer = response[i].getResponse();
        try {
            var parts = answer.match(/[\s\S]{1,1024}/g) || [];
        } catch (e) {
            var parts = answer;
        }

        if (answer == "") {
            continue;
        }

        for (var j = 0; j < parts.length; j++) {
            if (j == 0) {
              if (question == "Email address:"){
              answer = " ";
              }
                items.push({
                    "name": question,
                    "value": parts[j],
                    "inline": false
                });
            } else {
                items.push({
                    "name": question.concat(" (cont.)"),
                    "value": parts[j],
                    "inline": false
                });
            }
        }
    }


    var params = {
        "method": "post",
        "payload": JSON.stringify({
            "embeds": [{
                "title": "Form",
                "fields": items,
                "footer": {
                    "text": "Form"
                }
            }]
        })
    };

  UrlFetchApp.fetch(POST_URL, params);}

没有错误消息。我已多次运行该脚本,但似乎无法正常工作。该电子邮件仍显示在不和谐频道中。

1 个答案:

答案 0 :(得分:2)

当您使用getItemResponses()获得答复时,您将收到与问题顺序相同的表格答复数组。解决您的问题的方法是将电子邮件问题更改为表单顶部,然后在其后开始循环:for (var i = 1; i < response.length; i++) {...

为避免更改表格,您只需跟踪哪个问题是电子邮件,可以通过在日志中用Logger.log(response[i].getResponse() + " " + i);列出您的答复,然后使用i跳过循环中的电子邮件条目来进行检查像这样:

for (var i = 0; i < response.length; i++) {
    if (i == x)
        continue;
...

其中x是电子邮件的索引,只需跳过电子邮件中的条目,然后继续其余问题,希望对您有所帮助!