簡體   English   中英

在Google工作表中將JS代碼調整為Apps腳本

[英]Adjusting JS code to Apps Script in Google sheet

我在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”。

希望對此有所提示!

知道了-這是如何運作的。 當然-需要使用第二個函數來調用那個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;
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM