Как я могу подвергнуть цензуре ответ на вопрос через формы Google? - PullRequest
1 голос
/ 19 июня 2019

Я использую webhook с discord для отображения результатов на канале discord. Моя форма имеет логин с использованием соответствующих выражений. Этот логин включает в себя электронную почту. Я хочу, чтобы это письмо было подвергнуто цензуре или удалено из того, что выводится на канал разногласий, так как я не хочу, чтобы люди видели, какова их электронная почта. Я очень мало знаю о Google Apps Script, поэтому мне очень нужна помощь в этом. Если вы знаете какой-либо 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 Ответ

2 голосов
/ 20 июня 2019

Когда вы получаете ответы с 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 - индекс электронной почты, просто пропустит запись с электронным письмом и продолжит с остальными вопросами, надеюсь, это помогло!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...