当代码在 Google Sheet 中后台运行时发出警报

2024-06-21

使用 Google App 脚本和 Javascript,我设法检索 xls Gmail 附件,将其转换为 Google 表格,向某些收件人发送警告电子邮件,在添加新附件时插入带有 Google Drive 文件夹链接的事件,并在最后,我使用一个独立的脚本来导入一些来自此类 xls 文件的数据,这些数据已转换为主要的 Google 表格,其中一名操作员正在使用 h24(更新一些数据以便稍后在服务本身期间转发)。 独立脚本每 30 分钟运行一次以检查传入邮件(第二天或几天的计划),当找到邮件时,它会执行代码。 到目前为止,锁定服务在独立脚本上不可用,因此我无法锁定文档,因此我希望向用户显示一条消息,表明该脚本即将运行并且不编辑任何内容,因为绑定到电子表格的其他脚本是使用 Lock 服务,因此结果可能会非常令人失望。我搜索了有关此“警报”的信息,但找不到有关它的线索。 你能在某个地方给我打电话吗? 我可以添加菜单功能而不是独立脚本,操作员可以选择“导入数据”,仅此而已,但我希望在后台自动执行操作。


您可以使用 HTML 服务。我自己对此了解不多,但我认为以下内容可能会满足您的需求:

在 .gs 文件的顶部:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var htmlApp = HtmlService.createTemplateFromFile("html");     
var status = "Loading....."
 htmlApp.data = status;
 ss.show(htmlApp.evaluate()
 .setWidth(300)
 .setHeight(200));

最后(就在最后一个大括号之前):

var status = "Finished!"
 htmlApp.data = status;
 ss.show(htmlApp.evaluate()
 .setWidth(300)
 .setHeight(200));

在名为“html”的新 HTML 脚本文件中:

<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<h2>Updating..</h2>
<p id="status">(innerHTML).</p>
<div id="imageico"></div>
<script>
var imageContainer = document.getElementById("imageico");
if (<?= data ?> != "Finished!"){
document.getElementById("status").innerHTML = "Running script, please wait..";
} else {
document.getElementById("status").innerHTML = "Finished! You can now close the window.";
closeBtn();

}  
   function closeBtn(){
   var button = document.createElement("INPUT");
    button.setAttribute("type", "button");
    button.setAttribute("value", "Close");
    button.setAttribute("onclick", "closeWindow();");
    imageContainer.appendChild(button);
    }

function closeWindow(){
google.script.host.close();
}
</script>
</body>
</html>

EDITED根据评论

在您的 .gs 文件中:

 function test() {

    htmlApp("","");

/*
*
*  Put your code in here....
*
*/     

  Utilities.sleep(3000); // change this value to show the "Running script, please wait.." HTML window for longer time.

  htmlApp("Finished!",""); 

  Utilities.sleep(3000);  // change this value to show the "Finished! This window will close automatically. HTML window for longer time.

  htmlApp("","close"); // Automatically closes the HTML window.

}

 function htmlApp (status,close) {
     var ss = SpreadsheetApp.getActiveSpreadsheet();
     var htmlApp = HtmlService.createTemplateFromFile("html");     
      htmlApp.data = status;
      htmlApp.close = close;
      ss.show(htmlApp.evaluate()
     .setWidth(300)
     .setHeight(200));
}

在名为“html”的 HTML 脚本文件中:

<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<h2>Updating..</h2>
<p id="status">(innerHTML).</p>
<div id="imageico"></div>
<script>
var imageContainer = document.getElementById("imageico");
if (<?= data ?> != "Finished!"){
document.getElementById("status").innerHTML = "Running script, please wait..";
} else {
document.getElementById("status").innerHTML = "Finished! This window will close automatically.";
}     
if (<?= close ?> == "close"){
google.script.host.close();
}
</script>
</body>
</html>

看看这个样本电子表格 https://docs.google.com/spreadsheets/d/1QphYHr_sYNrHntUJOX7_cFbxzPxaEL2blPpnI-Td_sQ/edit?usp=sharing.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当代码在 Google Sheet 中后台运行时发出警报 的相关文章

随机推荐

  • UNIX 中 $@ 和 $* 有什么区别?

    有什么区别 and 在UNIX 中 当在脚本中回显时 它们似乎都会产生相同的输出 请参阅特殊参数下的 bash 手册页 Special Parameters The shell treats several parameters speci
  • Ant - 如何获取特定文件夹中的所有文件名

    这是我的生成jar包的Ant脚本 我有一堆清单类路径属性的jar包 它们都在特定的文件夹中 我不想硬编码 如何自动获取它们
  • 如何调用 Numpy 数组中的元素?

    这看起来是一个非常简单的问题 但我找不到答案 如何调用 Numpy 数组中的元素 import numpy as np arr np array 1 2 3 4 5 6 7 8 9 10 print arr 0 0 上面的代码不起作用 只需
  • Delphi定时器比毫秒更精确

    我在 Delphi 中有一个程序 它以 25 赫兹 每秒 25 次 的速度从外部应用程序获取帧 然后通过创建 1 2 个额外帧将其转换为 60 赫兹 每秒 60 帧 我需要通过连续构建帧缓冲区并从单独的线程输出帧来输出这些额外的帧 问题是
  • iPhone 核心数据:无法找到 NSManagedObjectModel

    我使用 Apple 的 CoreDataBooks 示例项目作为核心数据的学习辅助工具 我修改了应用程序 以便在加载应用程序时我首先显示菜单页面 而不是图书表视图 RootViewController 我做了以下事情 我在界面生成器中创建了
  • ASP.NET Identity Extend 方法来访问用户属性

    我可以扩展方法来访问用户属性吗 有这样的方法 User Identity GetUserId User Identity GetUserName 可以从视图和控制器访问它们 我想使用以下方法扩展此功能 User Identity GetUs
  • IIS 和网络花园配置

    允许 IIS 在每个应用程序池 网络花园配置 中生成多个工作进程是否具有显着的性能优势 哪些性能计数器表明这可能是个好主意 我知道会话状态必须在进程外运行 但是还有其他问题吗 我做了一些研究 发现这篇有用的文章 其中涵盖了许多潜在的问题 并
  • xmpp 书签的自动加入选项不起作用

    我正在尝试使用 XEP 0048 书签 http xmpp org extensions xep 0048 html http xmpp org extensions xep 0048 html 我正在使用 RobbieHanson XMP
  • 使用基于浏览器的 JavaScript 和 Node 操作本地文件系统

    我正在制作一个项目 需要允许用户从浏览器与文件系统进行交互 我在编写客户端 JavaScript 方面拥有丰富的经验 并且在为网页抓取 数据分析和文件系统工作等编写 Node 脚本方面也拥有丰富的经验 但这个项目将允许用户在浏览器中更改内容
  • iFrames 和法律 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 假设参与者 A 在 iF rame 中拥有参与者 B 的站点 除了 url 之外 网站没有任何区别 网址完全不同 参与者 A 使用 B 的
  • 尝试写入文件夹时出现“java.nio.file.AccessDeniedException”

    由于某种原因我不断得到java nio file AccessDeniedException每次我尝试使用 Tomcat 上的 java webapp 写入计算机上的文件夹时 此文件夹的权限设置为我的计算机 Windows 上的每个人的完全
  • 在业务逻辑中使用反射是一种好的做法吗?

    我需要开发一个由两个主要部分组成的应用程序 具有特定业务类别的业务逻辑部分 例如书籍 图书馆 作者 一个通用部分 可以在数据网格中显示书籍 图书馆 将它们映射到数据库 通用部分使用反射从业务类中获取数据 而不需要在业务类中编写特定的数据网格
  • 在运行时检查 GCC 版本

    我需要找出 C 程序执行过程中 运行时 可用的 系统中安装的 GCC 版本 主要版本和次要版本 意思是 以编程方式提取可用 gcc 的版本 就像我在 shell 中输入 gcc version 一样 但在 c 程序中 The GNUC an
  • 为什么当我使用 Server.Transfer() 时没有创建 HTTP 标头?

    我正在使用 aspx 页面根据给定的参数从文件系统提供图像文件 Server Transfer imageFilePath 当此代码运行时 会提供图像 但不会上一次更改HTTP 标头已创建 与直接从同一服务器上的 URL 调用同一文件不同
  • Python:帮助计数器和写入文件[重复]

    这个问题在这里已经有答案了 可能的重复 Python 如何创建连续的文件名 https stackoverflow com questions 2400827 python how do i create sequential file n
  • 如何将电子邮件类型的输入应用到 Asp.net MVC3 Razor 中的 HTML Helper

    如何将电子邮件类型的输入应用到 Asp net MVC3 Razor 中的 HTML Helper 例如
  • SQL 按 IN 子句中的元素排序

    我有一个ITEM表 我想返回按 IN 子句中通知的相同顺序排序的结果 这些 ID 由用户告知 今天我有这个 SELECT FROM ITEM WHERE ITEM ID IN 45 2 671 6 ORDER BY CASE ITEM ID
  • 在屏幕上随机生成一个圆圈并将其设为绿色或红色

    所以我一直在尝试制作一个游戏应用程序 它可以在 Android 屏幕上随机显示带有文本的红色按钮或带有文本的绿色按钮 如果有人可以帮助我 我将不胜感激 另外 如果有人知道如何做到这一点 我想慢慢地产生更快的酷优势 谢谢 SuppressLi
  • 使用 svn 元数据克隆 git-svn 存储库

    我已经克隆了我的主存储库git svn clone svn url trunk stdlayout 现在我想使用 svn 元数据克隆存储库 这样我就能够git svn rebase它到主服务器 注意 我不想在两个之间推送提交git svn克
  • 当代码在 Google Sheet 中后台运行时发出警报

    使用 Google App 脚本和 Javascript 我设法检索 xls Gmail 附件 将其转换为 Google 表格 向某些收件人发送警告电子邮件 在添加新附件时插入带有 Google Drive 文件夹链接的事件 并在最后 我使