我的setValue在谷歌工作表中不起作用



e11中的值不同于";MC ou CC";

我可以从提示中获取值,并将其显示在logger.log中,但不知何故,该值没有传输到D11单元格。

Function onEdit(e) { 
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName("Demande");
if(s.getRange("E11").getValue() != "MC ou CC"){     
var ui = SpreadsheetApp.getUi() ;
var Bouton =   ui.prompt('Veuillez entrer le montant du paiement 
mensuel', ui.ButtonSet.OK_CANCEL);
var Reponse = Bouton.getResponseText();
if (Bouton == ui.Button.OK) {
Logger.log('The user clicked "OK" or the close button in the d 
ialog's title  bar.'+Reponse);
s.getRange("D11").setValue(Reponse);
} else {
Logger.log('The user clicked "No" or the close button in the 
dialog's title  bar.'+Reponse);
}
}
}

问题:

您需要获取getSelectedButton((,以便找出用户单击的按钮。

基于您答案的解决方案:

if(Bouton == ui.Button.OK)替换为if(Bouton.getSelectedButton() == ui.Button.OK):

function myFunction() { 
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName("Demande");
if(s.getRange("E11").getValue() != "MC ou CC"){     
var ui = SpreadsheetApp.getUi() ;
var Bouton =   ui.prompt('Veuillez entrer le montant du paiement mensuel', ui.ButtonSet.OK_CANCEL);
var Reponse = Bouton.getResponseText();
if (Bouton.getSelectedButton() == ui.Button.OK) {
Logger.log('The user clicked "OK" or the close button in the dialog's title  bar.'+Reponse);
s.getRange("D11").setValue(Reponse);
} else {
Logger.log('The user clicked "No" or the close button in the dialog's title  bar.'+Reponse);
}
}
}

由于您手动执行此函数,因此不需要使用onEdit触发器。相反,您可以使用常规函数,因此我更改了名称。如果要正确使用onEdit触发器,请参阅下面的推荐答案。

推荐解决方案:

  • onEdit触发器和一般触发器功能不应该像现在这样手动运行
  • 当用户更改的值时,onEdit触发器被激活细胞

利用事件对象:

function onEdit(e) { 
var ss = e.source;
var s = ss.getActiveSheet();
var rng = e.range;
if(s.getName() == "Demande" && rng.getA1Notation()=='E11' && rng.getValue()!="MC ou CC"){    
var ui = SpreadsheetApp.getUi();
var Bouton =   ui.prompt('Veuillez entrer le montant du paiement mensuel', ui.ButtonSet.OK_CANCEL);
var Reponse = Bouton.getResponseText();
if (Bouton.getSelectedButton() == ui.Button.OK) {
Logger.log('The user clicked "OK" or the close button in the dialog's title  bar.'+Reponse);
s.getRange("D11").setValue(Reponse);
} else {
Logger.log('The user clicked "No" or the close button in the dialog's title  bar.'+Reponse);
}
}
}

小心:

  • 此解决方案使用事件对象,建议使用onEdit触发器。如果手动执行该函数,这将不起作用。只有当用户更改单元格的值时,它才会起作用。

  • 它假设您在编辑工作表"Demande"中单元格'E11'的值时,只想在主if条件内执行代码。因此,只有当您在"Demande"中编辑单元格'E11'时,它才会起作用。

如果您想要不同的行为,请告诉我,我会相应地修改代码。

相关内容