Удалить знак + из отправки формы Google - PullRequest
1 голос
/ 18 октября 2019

Я использую формы Google, чтобы вести инвентарь лекарств. Для каждого лекарства необходимо рассчитывать, сколько вы начали, сколько вы добавили / удалили, а затем сколько вы оставили. У меня есть добавленный / удаленный как множественный выбор 0, -1 и опция заполнения. Это делает так, что вы проходите через все лекарства 99% времени, это те два варианта. Но когда они пополняют запасы, люди продолжают писать «+» на номер. Это делает так, что ни один из моих сценариев не работает, и он не будет делиться этим с другими листами.

Как мне удалить знак «+» из их представлений? Я попытался отформатировать столбец, но это исправляет только те, которые были там, а не новые представления. Любой совет?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 19 октября 2019

У вас есть поле в форме, где вы ожидаете, что ответ будет значением, но некоторые ответы являются строками. Это результат предшествования значению знаком «плюс» («+»).

Следующий ответ демонстрирует метод проверки, является ли ответ числом или строкой, и преобразование ответа в число. Это может быть использовано в триггере onFormSubmit (либо в форме, либо в электронной таблице ответов).

Код основан на операторе Javascript typeof .


 function so5845243102() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheetname = "Form Responses 2";
  var sheet = ss.getSheetByName(sheetname);

  // Column D contains responses that should be values but are occassionally strings.
  // Therefore test before processing.
  // Cell D5 contains an example 
  var resp = sheet.getRange("D5").getValue();
  // Logger.log(resp);//DEBUG

  if (typeof resp === 'string') {
    // this is a string
    Logger.log("DEBUG: Response = "+resp+" is a string;  length = "+resp.length+", the first character = "+resp.substring(0, 1));

    // test if first character is a plus sign ("+")
    if (resp.substring(0, 1) ==="+"){

      // exclude the first character
      var shortresp = resp.substring(1,+resp.length);
      Logger.log("DEBUG: the shortened response = "+shortresp);

      // now, convert the shortened response to a number and test it
      var modrespnum =Number(shortresp);

      // test whether the modified value is still a string
      if (typeof modrespnum === 'string'){
        // if a string, then more detailed investigation required;
        Logger.log("DEBUG: Modified response = "+modrespnum+". It is a string - Investigate ");
        return;      
      }
      else{
        // it is NOT a string
        Logger.log("DEBUG: Modified response = "+modrespnum+". It is NOT a string");

        // if not a string, test whether it is a number
        if (typeof modrespnum === 'number') {
          Logger.log("DEBUG: Modified response = "+modrespnum+". It is a number"); 
          return;
        }
        else{
         Logger.log("DEBUG: Modified response = "+modrespnum+". It is NOT a number - Investigate ");
        }
        return;
      }
    }
    else{
      // more investigation required
      Logger.log("DEBUG: Response value = "+resp+" - needs investigation");
    }
  }
}
0 голосов
/ 18 октября 2019

В настоящее время нет способа реализовать проверку формы с помощью Google Apps Script (см. Связанные вопросы 1 , 2 ). Однако вас может заинтересовать следующий предложенный обходной путь:

Обходное решение

Вы можете использовать тип вопроса short answer с проверкой ответа . Проверка ответа, при условии, что вы допускаете только целые числа, должна быть установлена ​​следующим образом:

  • Регулярное выражение, соответствует (-)?\d*.

Это будет выглядеть так:

Example form with response validation

В случае, если пользователь вводит число, такое как +55, форма не позволит ему отправить его, показывая ошибку «Число»недействительно ".

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