通过Google应用脚本跟踪Google电子表格中的更改

时间:2014-11-19 17:56:20

标签: google-apps-script google-sheets google-drive-api

我正在尝试构建一个Google电子表格脚本来跟踪一系列单元格中的更改,如c10:y100,如果这些单元格中的任何一个已更改且用户试图离开该页面,我就会这样做。 d喜欢有一个确认对话框说"你需要更新这个文件的修订号"。

我已经查看了各种方法,但是找不到核心功能,如果用户试图离开页面而没有手动更改修订号,我可以触发此功能在那个范围内。

我会怎么做?

1 个答案:

答案 0 :(得分:1)

使用Google Apps脚本,没有关于用户在客户端用户界面中的行为方式的一般反馈 - 例如,我们无法判断他们是否关闭了浏览器标签页或浏览器。没有它,你的目标就无法完全实现。

您可以通过将How to poll a Google Doc from an add-on中描述的技术应用于电子表格并应用其他一些技巧来实现目标......

您可以获取有关电子表格内容的信息"活动":

  • Spreadsheet.getActiveSheet()会告诉您有效的"标签"
  • Sheet.getActiveCell()和Sheet.getActiveRange()可以告诉您用户在活动工作表上的位置。 (对这种情况不太感兴趣,但仍值得注意。)

onEdit()功能可以记录您感兴趣的范围的手动编辑。当相关编辑时,它还可以 打开侧边栏 制作!您可以让侧边栏的内容鼓励甚至促进生成新版本号,例如通过提供完成任务的按钮。

// onEdit function that opens sidebar if a particular cell is edited.
function onEdit(e) {
  if (e.range.getSheet().getName() === "Sheet1"
      && e.range.getA1Notation() === "A1") {
    // Edit was performed in our target range

    // First, make a note of the change.

    // Then open our tracking sidebar
    var html = HtmlService.createHtmlOutput('<H2>Up-Revision required</H2>')
                          .setTitle('Tracking sidebar')
                          .setWidth(300);

    var ui = SpreadsheetApp.getUi();
    ui.showSidebar(html);
  }

  // Ignore all other edits
}

执行:您可以使用任何Web应用程序阻止用户起身和离开(或关闭窗口)。不过,你仍然希望尽力帮助他们做正确的事。

  • 如前所述,通过帮助用户设置新的修订号,让您的用户轻松上手。

  • 如果您的侧边栏轮询器在用户更改了标签时记录了触发条件(在C10:Y100中编辑而没有升级版本),那么它可以打开模式对话框来强制执行向上版本控制。 / p>

  • 如果您以非易失的方式注意到未修订的更改(比如使用文档属性),那么您可以使用onOpen()触发器功能执行测试并打开侧边栏和/或模态对话框。