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 脚本 > 如何以编程方式退出单元格?的主要内容,如果未能解决你的问题,请参考以下文章

我可以以编程方式退出 Firebird 脚本吗

如何以编程方式监控 docker 容器是不是退出?

以编程方式在Google Apps脚本的测验中允许查看分数

如何以编程方式创建“数据库创建脚本”?

如何通过 Apps 脚本在 Google 表格中“清除格式”

如何在Google Maps API中退出全屏模式