检查生成的随机数不存在;无法将数组转换为对象

时间:2018-09-18 17:51:48

标签: google-apps-script google-sheets google-sheets-api

我到处搜索,没有找到适用于Google脚本API的任何解决方案。

背景:尝试使用(1)随机的六位数字填充1行x 4列数组,该数字在第1列中尚不存在(2)今天的日期(3)用户输入的商店编号(4)用户输入的盒子数。

在此脚本中,我们首先打开一个对话框,要求用户输入商店号和盒子数。此(和其他)信息将填充在最后一行。

我在这里有两个问题。

问题1: 我不知道一种方法可以对照A列中已有的数据检查生成的随机数。我需要能够创建唯一的随机数。

问题2: 在使用带有随机数的占位符的脚本运行脚本时,我收到一条错误消息“无法将数组转换为object [] []”-我不确定在这里哪里出错了。

function onOpen() {
SpreadsheetApp.getUi()
  .createMenu('Create New Exception Number')
  .addItem('Add New Exception Number', 'showPrompt')
  .addToUi();
}

function showPrompt() {
  var ui = SpreadsheetApp.getUi(); 

  var storeNumPrompt = ui.prompt(          //receive input for Column C data
  'Please enter the store number.',
  ui.ButtonSet.OK_CANCEL);

  var numBoxesPrompt = ui.prompt(          //receive input for Column D data
  'Please enter the number of boxes.', 
  ui.ButtonSet.OK_CANCEL);

  var randomNum = Math.floor(Math.random()*999999); //random number for Column A, that does not already exist in Column A
  var today = Utilities.formatDate(new Date(), "PST", "dd/MM/yyyy"); //Today's date to go in Column B
  var storeNum = storeNumPrompt.getResponseText(); //value based on user input
  var numBoxes = numBoxesPrompt.getResponseText(); //value based on user input
  var lastRow = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Exception Numbers').getLastRow()+1; //determine what is the last row
  var values = [randomNum,today,storeNum,numBoxes];

  var newException = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Exception Numbers').getRange(lastRow,1,1,4); //gets the range of the last row, 4 columns wide
  newException.setRange(values); //sets the values as previously specified in the last row.
}

1 个答案:

答案 0 :(得分:0)

创建大量的“随机”数字,从该数字集中删除重复的数字,每次需要另一个时选择另一个。