gpt4 book ai didi

google-sheets - 当代码在谷歌表格中运行后台时发出警报

转载 作者:行者123 更新时间:2023-12-05 01:45:22 30 4
gpt4 key购买 nike

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

最佳答案

您可以使用 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>

已编辑 根据评论

在您的 .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>

看看这个Sample Spreadsheet .

关于google-sheets - 当代码在谷歌表格中运行后台时发出警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41785183/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com