Настройка JS-кода для Apps Script на странице Google - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть рабочий код в JS для моего веб-приложения, который генерирует идентификационный номер отчета в произвольном формате с шаблоном NSAA - #### - #### - YYYY, где AA - любая буква, ####любое число, ГГГГ текущего года.Эта функция в JS цитируется ниже.

Меня попросили попытаться перенести на лист Google те же функции, что и в «пользовательской функции».

Хотя большая часть кода работает нормально, яполучить проблемы с indexOf методами в GAS, и в целом я не уверен, правильно ли я это делаю.Буду признателен за подсказку.

Это код JS, который я пытаюсь воспроизвести в скрипте приложений:

let d = new Date();
const randomString = (length, chars) => {
  let mask = '';

  if (chars.indexOf('A') > -1) mask += 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  if (chars.indexOf('#') > -1) mask += '0123456789';
  let result = '';
  for (let i = length; i > 0; --i) result += mask[Math.round(Math.random() * (mask.length - 1))];
  return result;
}

// Inserting report ID into appropriate fields
const reportNS = () => {
  let reportIDNS = document.getElementById("reportIDNS");
  reportIDNS.value = 'NS' + randomString(2, 'A') + '-' + randomString(4, '#') + '-' + randomString(4, '#') + '-' +
    d.getFullYear();
}

Моя первая идея заключалась в том, чтобы поместить его в нечто вроде этого:

/**
 */

var d = new Date();
function randomString (length, chars) {
  var mask = '';

  if (chars.indexOf('A') > -1) mask += 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  if (chars.indexOf('#') > -1) mask += '0123456789';
  var result = '';

  for (var i = length; i > 0; --i)
    result += mask[Math.round(Math.random() * (mask.length - 1))];
  return result = 'NS' + randomString(2, 'A') + '-' + randomString(4, '#') + '-' + randomString(4, '#') + '-' + d.getFullYear();
}

Однако я получаю сообщение об ошибке

TypeError: Невозможно вызвать метод "indexOf" из неопределенного.

Буду признателен за подсказку об этом!

1 Ответ

0 голосов
/ 03 февраля 2019

Понял - вот как это работает.Конечно - нужно использовать вторую функцию для вызова этой randomString:

// Funciton to create ReportID (or caseID) as the customer wants
function CaseID () {
  var d = new Date();
  var caseID = 'ID' + randomString(2, 'A') + '-' + randomString(4, '#') + '-' + randomString(4, '#') + '-' + d.getFullYear();
  return caseID;
} 

// Function that generates randomString - no surprises here
function randomString (length, chars) {
  var mask = '';

     if (chars.indexOf('A') > -1) mask += 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
     if (chars.indexOf('#') > -1) mask += '0123456789';
      var result = '';

  for (var i = length; i > 0; --i) {
    result += mask[Math.round(Math.random() * (mask.length - 1))]
  };
      return result;
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...