gpt4 book ai didi

javascript - 新 Google 站点菜单中的 Google 脚本 : How to?

转载 作者:行者123 更新时间:2023-12-03 00:23:52 26 4
gpt4 key购买 nike

我正在尝试将 Google 脚本“安装”为 Google 网站(新的 Google 网站,而不是“经典 Google 网站”)中的菜单项。

该脚本应该向嵌入网站的电子表格添加新行。该电子表格(名为“目录”)是一个 Google 工作表,并且该脚本(我想从 Google 网站运行)已作为绑定(bind)脚本安装在工作表中,并且在从 S 切换时可以工作纸。

该脚本实质上在我的歌轨道录底部添加了一个新行,以创建一个新行来添加新歌曲。

在电子表格中运行的脚本是:

function addSong() {
var ss = SpreadsheetApp.getActive();
var sheet = ss.getActiveSheet();
var numRows = sheet.getLastRow()
sheet.appendRow([numRows+1]);
}

我的问题是我不知道如何从网站访问脚本。即,我不知道如何在站点菜单中引用脚本(通过 URL 或什么?)以使其运行。

我设想它的工作方式是,我在网站的“目录”菜单下有一个名为“添加歌曲”的子页面,当我切换它时,我希望脚本运行并向目录添加一行片材。

有什么帮助吗?

最佳答案

更新了一个更清晰的示例:

首先,从其他地方访问 GAS 脚本的最佳方法可能是将其发布为 Web 应用程序。这样就可以通过其发布的 URL 调用该脚本。 Web 应用程序的主要要求是它有一个 doGet() 函数作为入口点。

我非常确定您只能将新的 Google 协作平台菜单项与同一网站中的另一个页面相关联。因此您无法直接从菜单调用 WebApp(通过其 URL)。但在新的“站点”页面上,菜单项会将您带到,您可以:

  • 将“站点”按钮与 Web 应用程序 URL 关联(如果有帮助),或者
  • 在页面中嵌入一些带有 JavaScript 的 HTML 代码,在页面加载时调用;有点复杂,但这确实意味着对 Web 应用程序的调用将是自动化的。

下面的代码是一个简单的 Web 应用程序,它是工作表中的绑定(bind)函数。如果您发布此内容(发布 >> 部署为 WebApp...),然后获取 URL,您可以将其与页面中的按钮或调用相关联。

function doGet(request){ 
addSong(request.parameter.song); // Call your own function.
var response = {status: "SUCCESS", data: request.parameter.song};
// Return the response.
return ContentService.createTextOutput(JSON.stringify(response)).setMimeType(ContentService.MimeType.JSON);
}

function addSong(song) {
var ss = SpreadsheetApp.getActive();
var sheet = ss.getActiveSheet();
var numRows = sheet.getLastRow()
sheet.appendRow([numRows+1,song]);
}

要使用按钮,请将以下内容添加为按钮的链接:

https://script.google.com/macros/s/<your web app ref>/exec?song=%22Bohemian%20Rhapsody%22

下面的代码是从通过菜单访问的站点网页中嵌入的 HTML 自动调用 Web 应用程序的示例。还有其他方法可以从 JavaScript 调用 Web 应用程序,但 XMLHttpRequest() 适用于大多数浏览器。

<!DOCTYPE html>
<html>
<body onload="test('https://script.google.com/macros/s/<your web app ref>/exec?song=StairwaytoHeaven') ;">
<p id="message">? </p>
<script>

function test(url) {
var XHR = new XMLHttpRequest();
XHR.onreadystatechange = function() {
if(XHR.readyState == 4) {
if(XHR.status == 200) {
console.log("SUCCESS: status = "+XHR.status);
document.getElementById("message").innerHTML = XHR.responseText;
console.log(XHR.responseText);
} else {
console.log("FAILURE: status = "+XHR.readystate+" "+XHR.status);
document.getElementById("message").innerHTML = "Failure";
}
}
}
XHR.open("GET", url + ((/\?/).test(url) ? "&" : "?") + Date.now()); // Add timestamp to disable caching, if required.
XHR.send();
return;
}

</script>
</body>
</html>

关于javascript - 新 Google 站点菜单中的 Google 脚本 : How to?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54185008/

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