У меня есть Google Sheet , настроенный с помощью двух кнопок на листе формы, которые прикреплены к двум различным сценариям. Они отлично работают на ПК, но, к сожалению, пользовательские кнопки по-прежнему не работают в приложении Google Sheets для планшетов. Я смог включить обходной путь через выпадающий список, но он все еще немного привередливый, поэтому мне интересно, могу ли я вместо этого просто переключать пользователей ПК и планшетов на флажки.
Если флажок в ячейкеG3 отмечен, скрипт AUTOFILL должен быть запущен и флажок должен быть снят;впоследствии, если флажок в ячейке G5 установлен, скрипт UPDATE должен быть запущен и его флажок снят.
Каков наилучший способ сделать это, теперь, когда флажки есть в Google Sheets?
Вот код, который я сейчас использую для обеих кнопок и раскрывающегося списка:
function onEdit(e) {
if (e.range.getA1Notation() == 'D3') {
if (/^\w+$/.test(e.value)) {
eval(e.value)();
e.range.clearContent();
}
}
}
function AUTOFILL() {
var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Data');
var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form');
var valueOfData = sheet1.getRange(sheet1.getLastRow(), 1).getValue();
sheet2.getRange('B3').setValue(valueOfData + 1);
}
function UPDATE() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var formSS = ss.getSheetByName("Form");
var dataSheet = ss.getSheetByName("Data");
var values = formSS.getRange("B3:B6").getValues().reduce(function(a, b) {
return a.concat(b)
});
var partNum = values[0];
var row;
dataSheet.getDataRange().getValues().forEach(function(r, i) {
if (r[0] === partNum) {
row = i + 1
}
})
row = row ? row : dataSheet.getLastRow() + 1;
var data = dataSheet.getRange(row, 1, 1, 4).getValues()[0].map(function (el, ind){
return el = values[ind] ? values[ind] : el;
})
var now = [new Date()];
var newData = data.concat(now)
dataSheet.getRange(row, 1, 1, 5).setValues([newData]);
formSS.getRange("B3:B6").clearContent()
}