应用脚本:强制编辑单元格以保存其内容

时间:2018-04-04 18:19:16

标签: google-apps-script google-sheets

这是我的情景:

  • 1个单元格:A1,您可以在其中输入一些文字
  • 1图像/绘图:单击时,将调用脚本函数

问题是该脚本尝试读取A1内容,但如果您正在编辑它,则在您手动单击另一个单元格之前,其内容不会更新(因此,如果您在编辑A1后直接单击图像,则脚本将读取先前存储的A1值)

问题是单击图像不会在A1上触发模糊事件,因此如果您正在编辑内容,则不会存储内容。我想知道如何使用Apps Script强制模糊/保存/停止编辑单元格,因此我可以确定检索到的值是您刚刚输入的值。我试过选择另一个有效范围,但它没有帮助。

谢谢。

1 个答案:

答案 0 :(得分:0)

我在Google表格中使用此解决方法,在点击具有与之关联的功能的按钮后将焦点返回到单元格(我使用侧边栏的程序化打开及其立即关闭):

main.gs

function inserisciNuovaRiga() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  sheet.insertRowBefore(2);
  showSidebar();
  var range = sheet.getRange("A2");
  sheet.setActiveRange(range);
}

function showSidebar() {
  var html = HtmlService.createHtmlOutputFromFile('sidebar');
  SpreadsheetApp.getUi().showSidebar(html);
}

sidebar.html

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body onload="google.script.host.close();">

  </body>
</html>

你可以在这里找到更多信息(使用翻译,教程在意大利语languange):

http://www.appsscript.it/tutorial/google-apps-script-eseguire-una-funzione-al-click-su-un-bottone-in-uno-spreadsheet-e-far-tornare-il-focus-su-un-cella/

对于本文的示例,在单击按钮后,代码会插入一个新行并将焦点返回到第一个准备写入的单元格,但只需根据您的需要进行调整。