Итак, у меня есть лист, на котором я добавил пользовательское меню (которое я искал и нашел в Google).
Пользовательское меню показывает диалоговое окно (см. Изображение ниже). Оно возвращает все проверки данных, которые у меня есть в определенной c ячейке, каждая из которых имеет флажок, поэтому я могу выбрать несколько параметров и вернуть их в одной ячейке.
см. изображение здесь
Но кнопка FILL CURRENT CELL работает медленно!
У меня есть вот этот набор кодов:
code.gs
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('Custom Menu')
.addItem('Show Dialog', 'showDialog')
.addToUi();
}
function showDialog() {
var html = HtmlService.createTemplateFromFile('page').evaluate();
SpreadsheetApp.getUi()
.showSidebar(html);
}
var valid = function(){
try{
return SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/1Bw-CW5JZX-MEjPKhrWSNA2zWkqJTR6W3yM2yDrqjE_0/edit#gid=0').getRange('B1').getDataValidation().getCriteriaValues()[0].getValues();
}catch(e){
return null
}
}
function fillCell(e){
var s = [];
for(var i in e){
if(i.substr(0, 2) == 'ch') s.push(e[i]);
}
if(s.length) SpreadsheetApp.getActiveRange().setValue(s.join(', '));
}
page. html
<div style="font-family: arial;">
<? var data = valid(); ?>
<form id="form" name="form">
<? if(Object.prototype.toString.call(data) === '[object Array]') { ?>
<? for (var i = 0; i < data.length; i++) { ?>
<? for (var j = 0; j < data[i].length; j++) { ?>
<input type="checkbox" id="ch<?= '' + i + j ?>" name="ch<?= '' + i + j ?>" value="<?= data[i][j] ?>"><?= data[i][j] ?><br>
<? } ?>
<? } ?>
<? } else { ?>
<p>Maybe current cell doesn't have <a href="https://support.google.com/drive/answer/139705?hl=en">Data validation...</a></p>
<? } ?>
<br>
<br>
<input type="button" value="Fill Current Cell" onclick="google.script.run.fillCell(this.parentNode)" />
<input type="button" value="Clear Selections" onclick="reset()" />
</form>
</div>
Кто-нибудь может мне помочь, чтобы кнопка FILL CURRENT CELL работала быстрее?