我有一个Google表格脚本,当用户尝试修改单元格时,该脚本应作为确认提示。
我已经使用过onEdit触发器并实现了它,以要求用户确认或取消修改。如果用户确认修改,则单元格将获得新值。如果没有,它将恢复其旧值。
除非单元格包含数据,否则所有方法都可以正常工作。然后,脚本没有将单元格恢复为其数据和公式,而是删除了公式,并向该单元格分配了一些垃圾值。
这是脚本:
function onEdit(e) {
var ui = SpreadsheetApp.getUi();
var text = e.oldValue; //backup text in cell value
var cell = e.source.getActiveRange().getA1Notation(); //backup cell number
var formula = SpreadsheetApp.getActive().getActiveSheet().getRange(cell).getFormulas(); //backup formulas
var result = ui.alert(
'Celula' + ' ' + cell + ' ' + 'a fost modificata!',
'Confirmati modificarea?',
ui.ButtonSet.YES_NO);
// Process the user's response.
if (result == ui.Button.YES)
{
// User clicked "Yes".
ui.alert('Modificare celula' + ' ' + cell + ' ' + 'efectuata');
}
else
{
// User clicked "No" or X in the title bar.
if(text==undefined)
{
SpreadsheetApp.getActive().getActiveSheet().getRange(cell).clearContent();
}
if(text!=undefined)
{
SpreadsheetApp.getActiveSheet().getRange(cell).setValue(text);
}
cell.setFormula(formula);
ui.alert('Modificare celula' + ' ' + cell + ' ' + 'anulata');
}
}
请注意,我已尝试在此行上支持单元格的公式:
var formula = SpreadsheetApp.getActive().getActiveSheet().getRange(cell).getFormulas(); //backup formulas
,然后在脚本的最后,如果用户取消修改,我试图将公式粘贴回单元格中:
cell.setFormula(formula);
但是,结果是上述结果。我希望我的语法有问题。我尝试了不同的方法,但是都没有用。请帮助我纠正此问题。谢谢。
答案 0 :(得分:0)
我做了几件事来简化它,但是仍然有同样的问题。似乎在onEdit()触发器触发时,公式已经消失了。
function onEdit(e) {
var ui = SpreadsheetApp.getUi();
var text = e.oldValue; //backup text in cell value
var cell = e.range.getA1Notation(); //backup cell number
var formula = e.range.getFormula(); //backup formulas
var result = ui.alert('Celula' + ' ' + cell + ' ' + 'a fost modificata!','Confirmati modificarea?',ui.ButtonSet.YES_NO);
if (result == ui.Button.YES) {
ui.alert('Modificare celula' + ' ' + cell + ' ' + 'efectuata');
}else {
if(text==undefined) {
e.range.clearContent();
}
if(text!=undefined) {
e.range.setValue(text);
}
cell.setFormula(formula);
ui.alert('Modificare celula' + ' ' + cell + ' ' + 'anulata');
}
}