Google apps script 在某人可以对列进行排序之前显示对话框 我有一列数字(查询结果) 除非我将其格式化为数字(格式菜单>数字>数字),否则数字不会添加 将它们格式化为数字后,我得到总数。然而,电子表格的用户不知道或者忘记了将数字格式化为数字的步骤 它们触发此操作的唯一操作是使用row1:col2对col2进行排序 我正在考虑一个解决方案,显示一个对话框,上面写着“请通过“格式菜单>数字>数字”将列2格式化为数字” 我已尝试为row1:col2添加OneEdit,但在使用排序时,这不起作用(仅在编辑单元格值时起作用)
需要帮助: 当col2不是数字格式时显示对话框,然后他们可以使用E85中的标题对其进行排序 尝试:Google apps script 在某人可以对列进行排序之前显示对话框 我有一列数字(查询结果) 除非我将其格式化为数字(格式菜单>数字>数字),否则数字不会添加 将它们格式化为数字后,我得到总数。然而,电子表格的用户不知道或者忘记了将数字格式化为数字的步骤 它们触发此操作的唯一操作是使用row1:col2对col2进行排序 我正在考虑一个解决方案,显示一个对话框,上面写着“请通过“格式菜单>数字>数字”将列2格式化为数字” 我已尝试为row1:col2添加OneEdit,但在使用排序时,这不起作用(仅在编辑单元格值时起作用),google-apps-script,google-sheets,Google Apps Script,Google Sheets,需要帮助: 当col2不是数字格式时显示对话框,然后他们可以使用E85中的标题对其进行排序 尝试: function onEdit(e) { var ss = "REPORTS (AUTO)"; var row = e.range.getRow(); if (e.range.getA1Notation() === 'E85' && e.source.getActiveSheet().getName() === ss){ <show dialog box
function onEdit(e) {
var ss = "REPORTS (AUTO)";
var row = e.range.getRow();
if (e.range.getA1Notation() === 'E85' && e.source.getActiveSheet().getName() === ss){
<show dialog box code here...>
}
函数onEdit(e){
var ss=“报告(自动)”;
var row=e.range.getRow();
if(e.range.getA1Notation()=='E85'&&e.source.getActiveSheet().getName()==ss){
}
排序不会触发onEdit
触发器,但会触发onChange
触发器
- 因此,
以onChange
changeType
- 对工作表进行排序会导致
变更类型
其他
函数bindMeToAnOnChangeTrigger(e){
如果(如changeType==“其他”){
SpreadsheetApp.getUi().alert(“请转到格式菜单>数字>数字”);
}
}
- 请注意,您需要手动将函数
绑定到可安装的bindMeToAnOnChangeTrigger(e)
trigger,方法是执行onEdit
Edit->Current Project's triggers->New trigger
- 请注意,类型为
的某些其他other
事件也可能触发触发器,因此您可能需要实施其他标准来验证是否应提醒其他用户onCahnge
函数bindMeToAnOnChangeTrigger(e){
如果(如changeType==“其他”){
var sheetName=“报告(自动)”;
var range=e.source.getSheetByName(sheetName).getRange(“A2:A20”);
var formats=range.getNumberFormats().flat();
Logger.log(格式);
//请在此设置所需的数字格式
var desiredFormat=“0
对于(var i=0;i
排序不会触发onEdit
触发器,但会触发onChange
触发器
- 因此,
以onChange
changeType
- 对工作表进行排序会导致
变更类型
其他
函数bindMeToAnOnChangeTrigger(e){
如果(如changeType==“其他”){
SpreadsheetApp.getUi().alert(“请转到格式菜单>数字>数字”);
}
}
- 请注意,您需要手动将函数
绑定到可安装的bindMeToAnOnChangeTrigger(e)
trigger,方法是执行onEdit
Edit->Current Project's triggers->New trigger
- 请注意,类型为
的某些其他other
事件也可能触发触发器,因此您可能需要实施其他标准来验证是否应提醒其他用户onCahnge
函数bindMeToAnOnChangeTrigger(e){
如果(如changeType==“其他”){
var sheetName=“报告(自动)”;
var range=e.source.getSheetByName(sheetName).getRange(“A2:A20”);
var formats=range.getNumberFormats().flat();
Logger.log(格式);
//请在此设置所需的数字格式
var desiredFormat=“0
对于(var i=0;i
非常感谢!我只需要一点关于标准的帮助。我可以做些什么来检查rangeA2:A20
是否为数字格式,这样就不会调用bindMeToAnOnChangeTrigger
了?另外,我的条件是e.range.geta1 notation()='E85'
但是当我使用F85和其他工具进行排序时,它仍然会显示消息。至于检索格式-您可以使用-请参阅我的更新答案。至于e.range.getA1Notation()
-不幸的是,e.range
不是onChange触发器的有效事件对象。可能您有一些其他条件不涉及检索e.range
或e.value
?感谢更新。至于e.range,条件是当E85是已排序的单元格而不是F85或其他标题时……您如何选择ort by header?第85行有下拉菜单吗?非常感谢!我只需要一些关于条件的帮助。如何检查rangeA2:A20
是否为数字格式,这样就不会调用bindmetoanchangetrigger
?另外,我的条件是e.range.getA1Notation()='E85'
但是当我使用F85和其他工具进行排序时,它仍然会显示消息。至于检索格式-您可以使用-请参阅我的更新答案。至于e.range.getA1Notation()
-不幸的是,e.range
不是onChange触发器的有效事件对象。可能您有一些其他条件不涉及检索e.range
或e.value
?感谢您的更新。至于e.range,条件是当E85是已排序并保存的单元格时