【发布时间】:2022-01-21 03:15:01
【问题描述】:
这是我的第一个 Google 脚本。界面是法语的。 用户在名为“添加歌曲”的工作表中填写单元格。通过点击“Enregistrer”按钮(=record),数据被复制到另一个工作表(“SongList”)。
单击按钮而不退出最后填充的单元格是一种自然行为。所以它保持在编辑模式。当然,单元格的值不会复制到 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();
}
谢谢!
【问题讨论】:
-
我必须为我糟糕的英语水平道歉。不幸的是,我无法理解你的问题。我可以问你目标的细节吗?
-
另一个人也有同样的问题:stackoverflow.com/questions/15344067/…也许他比我更清楚。