在Google工作表中将JS代码调整为Apps脚本

时间:2019-02-03 14:26:05

标签: javascript random google-apps-script google-sheets

我有一个适用于Web应用程序的JS工作代码,该代码会生成自定义格式的报告ID号,其格式为NSAA-###-####-YYYY,其中AA-任何字母,####任何数字,YYYY当前年份。下面引用了JS中的此功能。

有人要求我尝试将相同的功能作为“自定义功能”转移到Google表格中。

尽管大多数代码都能正常工作,但我在GAS中遇到indexOf方法的问题,总的来说,我不确定我是否做得正确。 希望对此有个简短的提示。

这是我要在Apps脚本中复制的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 :(得分:0)

知道了-这里是如何工作的。当然-需要使用第二个函数来调用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;
 }