匿名编辑者不会看到Google Apps脚本祝酒消息

时间:2019-08-13 14:44:06

标签: javascript google-apps-script google-sheets

我在可安装的onEdit触发函数中调用Toast消息,该函数每次进行编辑时都会在Google表格界面中显示一条消息。对于已登录其Google帐户的用户,该消息将按预期显示,但是当编辑器为匿名时,该消息不会显示在界面中。

我有一个启用了匿名编辑的表格文件(“ 知道链接的人”)。有一个独立的Google Apps脚本项目,该项目已安装了可安装的onEdit触发器。该功能中的所有内容均可对匿名用户和已登录用户成功执行,但Toast消息除外,该消息仅对已登录用户显示。

可安装的onEdit触发器已设置为执行showMessage函数。

触发安装方式:

ScriptApp.newTrigger('showMessage').forSpreadsheet('thefileid').onEdit().create();

showMessage功能:

function showMessage(e) {

    var msg = 'Some msg';
    var title = 'Some title';
    var file = e.source;
    var activeSheet = file.getActiveSheet();
    file.toast(msg, title);

    // do other things

}

将为已登录的用户而不是匿名用户显示该Toast消息。该功能中的“其他内容”按每个人的预期工作。我正在寻找一种向匿名用户显示该消息的方法(或寻找一种向其传达自动消息的方法)。脚本项目是独立的,不是容器绑定的,因此我无法使用Ui类来通知它们。容器绑定脚本不是一个选择,因为该脚本的大小很大并且可以在多个文件上运行。

2 个答案:

答案 0 :(得分:4)

  • 您要在匿名编辑电子表格的单元格时显示一条消息。
  • 电子表格已公开供匿名用户用作编辑器。

如果我的理解正确,那么这个答案如何?不幸的是,即使使用了已安装的OnEdit事件触发器,在编辑匿名用户时,也无法使用toast()和Class Ui。因此,作为几种解决方法之一,我想建议使用这些图像。幸运的是,insertImage()可用于这种情况。所以我正在使用这种解决方法。请认为这只是几个答案之一。

在使用此脚本之前,请准备要显示的图像。

示例脚本:

在使用此脚本之前,请设置图像的文件ID。并请安装showMessage()功能的OnEdit事件触发器。

function showMessage(e) {
  var fileId = "###"; // Please set the file ID of the image.

  var sheet = e.source.getActiveSheet();
  var blob = DriveApp.getFileById(fileId).getBlob();
  var image = sheet.insertImage(blob, 2, 3);
  Utilities.sleep(3000);
  image.remove();
}
  • 在此示例脚本中,当编辑单元格时,将显示准备的图像并等待3秒钟,然后将图像删除。

结果:

enter image description here

注意:

  • 当然,您可以创建一个图像以与脚本一起显示。但是在这种情况下,处理成本将变高。结果,直到显示图像为止的时间变长。因此,我建议使用预先创建的图像。

参考文献:

如果我误解了您的问题,而这不是您想要的方向,我深表歉意。

答案 1 :(得分:0)

如您在documentation中所见:

Apps脚本需要用户授权才能从built-in Google Servicesadvanced Google services

访问私有数据

这意味着您可以与任何人共享脚本,但是他们需要登录才能使用该脚本。