Проверить, есть ли значение в таблице Google - PullRequest
1 голос
/ 13 июля 2020

Я пытаюсь сгенерировать случайный код, но перед тем, как добавить его в Google Sheet, он должен проверить, есть ли код уже в Sheet или нет, если он есть, то ему необходимо повторно рандомизировать его, пока не появится не совпадает. Как l oop его, пока в Google Sheet нет совпадений? Мы будем признательны за ваш ответ.

Вот мой код .gs:

function processForm2() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var ws = ss.getSheetByName("Sheet1");

  var data = ws.getRange(5, 1, ws.getLastRow()-1, 1).getValues();
  var code = Math.random().toString(36).substring(7);
  var codeList = data.map(function(r){return r[0].toString(); });
  var position = codeList.indexOf(code);
  
  if(position < -1){
    ws.appendRow([code]);
  }else{
    var code = Math.random().toString(36).substring(7);
    ws.appendRow([code]);      
  }
}

1 Ответ

1 голос
/ 13 июля 2020

В вашем случае, как насчет цикла, когда position не -1? Когда ваш скрипт изменяется, он становится следующим:

От:

var code = Math.random().toString(36).substring(7);
var codeList = data.map(function(r){return r[0].toString(); });
var position = codeList.indexOf(code);

if(position < -1){
  ws.appendRow([code]);
}else{
  var code = Math.random().toString(36).substring(7);
  ws.appendRow([code]);      
}

Кому:

var codeList = data.map(function(r){return r[0].toString(); });
var code;
do {
  code = Math.random().toString(36).substring(7);
  var position = codeList.indexOf(code);
} while (position > -1);
ws.appendRow([code]);

Ссылка:

...