google-apps-script - 我的 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
,这是使用触发器的推荐方式。如果您手动执行该功能,这将不起作用。只有当用户更改单元格的值时,它才会起作用。它假定您只想在编辑工作表
if
中单元格的值时执行主要条件内的代码。因此,它仅在您编辑.'E11'
"Demande"
'E11'
"Demande"
如果您想要不同的行为,请告诉我,我会相应地修改代码。
推荐阅读
- python - pytest 框架 (python) 用法和调用
- c# - WebAPI 正则表达式路径属性引发错误“找不到令牌的替换值”
- jquery - 在百里香中创建一个简单的自动完成文本框
- javascript - 从异步函数返回对象
- scala - 使用 Spark 的 Sybase 中的 SQLException(您请求的 RSMDA 列类型名称未知)
- visual-studio-2017 - LogVSAccessor:警告:无法访问 Visual Studio
- ios - 折叠标题视图 - ScrollView 在到达底部时停止滚动
- javascript - JS - React - 将参数传递给导入的 const - var = undefined
- c# - 从 .net Core 3.0 控制台应用程序重新调整 API HTTPPost '解析值时遇到意外字符'
- javascript - 在把手中列出数组