Проверка сгенерированного случайного числа еще не существует;не может преобразовать массив в объект - PullRequest
0 голосов
/ 18 сентября 2018

Я искал и не нашел ни одного решения, применимого к API скрипта Google.

ОБЩАЯ ИНФОРМАЦИЯ: попытка заполнить массив столбцов 1 ряд x 4 (1) случайным шестизначным числом, который еще не существует в столбце 1 (2) сегодняшняя дата (3) введенный пользователем номер магазина (4) введенное пользователем количество ящиков.

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

У меня есть две проблемы здесь.

ВЫПУСК # 1: Я не знаю, как проверить случайное число, сгенерированное длячто уже существует в столбце А. Мне нужно иметь возможность создать уникальное случайное число.

ПРОБЛЕМА № 2: При запуске сценария с заполнителем для случайного числа я получаю сообщение об ошибке «Не удается преобразовать массиввозразить [] [] "- я не уверен, где я иду не так, как надо.

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 голосов
/ 18 сентября 2018

Создайте большой набор «случайных» чисел, удалите дубликаты из набора и каждый раз, когда вам понадобится еще один, выберите следующий.

...