Google 脚本 > 如何以编程方式退出单元格?
Posted
技术标签:
【中文标题】Google 脚本 > 如何以编程方式退出单元格?【英文标题】:Google Script > How to exit a cell programmatically? 【发布时间】:2022-01-21 03:15:01 【问题描述】:这是我的第一个 Google 脚本。界面是法语的。 用户在名为“添加歌曲”的工作表中填写单元格。通过点击“Enregistrer”按钮(=record),数据被复制到另一个工作表(“SongList”)。
screen capture
单击按钮而不退出最后填充的单元格是一种自然行为。所以它保持在编辑模式。当然,单元格的值不会复制到 SongList 表中。 只有 3 个字段是必填的。所以其他 3 人无法控制。
关于如何强制界面离开单元格的任何想法?当然,我尝试了 getRange 和 setActiveCell 方法,但它们不起作用(顺便说一句,很惊讶地看到可以选择一个单元格,而另一个单元格处于编辑模式)。
代码如下:
function addData()
var ss = SpreadsheetApp.getActiveSpreadsheet();
var addSong = ss.getSheetByName('Add song');
var songList = ss.getSheetByName('SongList');
var band = addSong.getRange('D4').getValue();
var song = addSong.getRange('H4').getValue();
var user = addSong.getRange('D15').getValue();
// DATA CONTROL
if(band.length==0)
addSong.getRange('D4').activate();
Browser.msgBox('Merci de renseigner le nom du groupe !', Browser.Buttons.OK);
return;
if(song.length==0)
addSong.getRange('H4').activate();
Browser.msgBox('Merci de renseigner le titre de la chanson !', Browser.Buttons.OK);
return;
if(user.length==0)
addSong.getRange('D15').activate();
Browser.msgBox('Merci de renseigner le nom du membre !', Browser.Buttons.OK);
return;
// DATA RECORD
var lastRow = songList.getLastRow()+1;
songList.getRange(lastRow, 1).setValue(Utilities.formatDate(new Date(), "GMT+1", "dd/MM/yyyy"));
songList.getRange(lastRow, 2).setValue(band);
songList.getRange(lastRow, 3).setValue(song);
songList.getRange(lastRow, 4).setValue(user);
songList.getRange(lastRow, 18).setValue(addSong.getRange('D9').getValue()); // Tuning
songList.getRange(lastRow, 19).setValue(addSong.getRange('H9').getValue()); // Song duration
songList.getRange(lastRow, 20).setValue(addSong.getRange('D11').getValue()); // Tempo
Browser.msgBox('Données enregistrées !', Browser.Buttons.OK);
// RESET FORM
addSong.getRange('D4:D11').clearContent();
addSong.getRange('H4:H9').clearContent();
addSong.getRange('D4').activate();
谢谢!
【问题讨论】:
我必须为我糟糕的英语水平道歉。不幸的是,我无法理解你的问题。我可以问你目标的细节吗? 另一个人也有同样的问题:***.com/questions/15344067/…也许他比我更清楚。 【参考方案1】:编辑:
解决方案1:用自定义菜单替换按钮
function onOpen()
SpreadsheetApp.getUi().createMenu('? Menu ?')
.addItem('? valider ici', 'addData')
.addToUi();
解决方案 2:在侧边栏中包含表单 (html)
【讨论】:
感谢您的回答!它不起作用,但让我想到了一个类似的话题:***.com/questions/15344067/… 在 Google 实施击键事件之前,似乎没有办法完成这项工作。 好的,解决方法是用自定义菜单替换按钮以上是关于Google 脚本 > 如何以编程方式退出单元格?的主要内容,如果未能解决你的问题,请参考以下文章