【发布时间】:2019-10-07 19:13:52
【问题描述】:
我有一个Google Sheet 在表单上设置了两个按钮,它们附加到两个不同的脚本。它们在 PC 上完美运行,但不幸的是,自定义按钮似乎仍然无法在平板电脑的 Google 表格应用程序上运行。我可以通过下拉框合并一个解决方法,但这仍然有点挑剔,所以我想知道是否可以将 PC 和平板电脑用户都切换到复选框。
如果单元格 G3 中的复选框被选中,AUTOFILL 脚本应该运行并且复选框应该被清除;随后,如果选中单元格 G5 中的复选框,则应该运行 UPDATE 脚本并清除其复选框。
既然复选框是 Google 表格中的一个东西,那么最好的方法是什么?
这是我目前使用的代码,适用于按钮和下拉菜单:
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()
}
【问题讨论】: