Это даст вам диалоговое окно для просмотра всех результатов.
function runThis() {
var gamesThatFitCriteria = findGames(4,50);
var userInterface=HtmlService.createHtmlOutput(gamesThatFitCriteria.join('<br />'));
SpreadsheetApp.getUi().showModelessDialog(userInterface, "Games")
}
function findGames(player, timeInMinutes) {
var games=SpreadsheetApp.getActive();
var sh=games.getActiveSheet();
var rg=sh.getRange(3,1,sh.getLastRow(),sh.getLastColumn());
var values=rg.getValues();
var result = [];
for (var i=0;i<values.length;i++) {
var currentGame = values[i];
var time = currentGame[2];
var minPlayer = currentGame[3];
var maxPlayer = currentGame[4];
if (time<=timeInMinutes && player >= minPlayer && player <= maxPlayer) {
result.push(currentGame);
}
}
return result;
}
Если вы просто хотите, чтобы названия игр:
function runThis() {
var gamesThatFitCriteria = findGames(4,50);
var userInterface=HtmlService.createHtmlOutput(gamesThatFitCriteria.join('<br />'));
SpreadsheetApp.getUi().showModelessDialog(userInterface, "Games")
}
function findGames(player, timeInMinutes) {
var games=SpreadsheetApp.getActive();
var sh=games.getActiveSheet();
var rg=sh.getRange(3,1,sh.getLastRow(),sh.getLastColumn());
var values=rg.getValues();
var result = [];
values.forEach(function(r){var name=r[0];var time=r[2];var minPlayer=r[3];var maxPlayer=r[4];if(time<=timeInMinutes && player >= minPlayer && player <= maxPlayer) {result.push(name);}});
return result;
}
Вот пример полного пользовательскогодиалог, который позволяет вам ввести игроков и время и выбрать нужную игру. Вы можете перейти к функции getSelection () и сохранить выбор в любом месте с помощью функции setValue ().
Просто загрузите этот код в файл .gs и удалите другие функции с такими же именами.
function runOne() {
var html='<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script><link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"><script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>';
html+='<input type="text" id="player" placeholder="Players" /><br /><input type="text" id="time" placeholder="Time in minutes"><br /><input type="button" value="Get Games" onClick="getGames();" /><br /><div id="result"></div><div id="hidden" style="display:none;"><br /><select id="sel1" class="control" style="width:150px;height:35px;margin:5px 0 5px 0;"><option value="" selected></option></select></div>';
html+='<script>function getSelection(){var selection=document.getElementById("sel1").value;console.log("I am here");google.script.run.withSuccessHandler(function(r){google.script.host.close();}).getSelection(selection);}function getGames(){var players=document.getElementById("player").value;var minutes=document.getElementById("time").value;google.script.run.withSuccessHandler(function(rObj){updateSelect(rObj.games);document.getElementById("sel1").addEventListener("change", getSelection);$("#hidden").css("display","block");}).findGames(players,minutes);}function updateSelect(vA,id){var id=id ||"sel1";var select=document.getElementById(id);select.options.length = 0;for(var i=0;i<vA.length;i++){select.options[i]=new Option(vA[i],vA[i]);}}console.log("My Code");</script>';
var userInterface=HtmlService.createHtmlOutput(html).setWidth(800);
SpreadsheetApp.getUi().showModelessDialog(userInterface, "Find Games");
}
function findGames(player, timeInMinutes) {
var games=SpreadsheetApp.getActive();
var sh=games.getActiveSheet();
var rg=sh.getRange(3,1,sh.getLastRow(),sh.getLastColumn());
var values=rg.getValues();
var result = ['Select a game'];
values.forEach(function(r){var name=r[0];var time=r[2];var minPlayer=r[3];var maxPlayer=r[4];if(time<=timeInMinutes && player >= minPlayer && player <= maxPlayer) {result.push(name);}});
var rObj={games:result};
return rObj;
}
function getSelection(selection) {
var msg=Utilities.formatString('You have selected: %s',selection);
SpreadsheetApp.getUi().alert(msg);
//you can put selection any where you want with setValue()
return true;
}
Запустите функцию runOne (), чтобы открыть диалоговое окно.