可以更新影响其他 google 应用脚本的一个 google 应用脚本吗?
Possible to update one google appscript that affects other google appscript?
我已经使用 google 应用程序脚本创建了一个可用的电报机器人。
但是,我 运行 遇到了一个问题,即在更新主代码时我必须更新多个不同的应用程序脚本。
我需要超过 1 个 google 应用程序脚本的原因是只有 1 个机器人可以 webhook 到一个网络应用程序 URL。我需要多个机器人,因为它针对不同的用户群,但功能是相同的。
代码长约 +700 行。
有什么方法可以更新主 google 应用程序脚本而无需更新其他 google 应用程序脚本?
编辑 1:
为了更好地解释我的问题,我将根据我编写的代码来说明它。
var token = "1xxx"; // bot 1
var token2 = "yyy" // bot 2
var telegramUrl = "https://api.telegram.org/bot" + token;
var telegramUrl2 = "https://api.telegram.org/bot" + token2;
function setWebhook() {
var url = telegramUrl + "/setWebhook?url=" + webAppUrl;
var response = UrlFetchApp.fetch(url);
}
function setWebhook2() {
var url = telegramUrl2 + "/setWebhook?url=" + webAppUrl;
var response = UrlFetchApp.fetch(url);
}
function doPost(e) {
var contents = JSON.parse(e.postData.contents);
}
所以这就是我试图做的,通过将 2 个机器人连接到一个 google 应用程序脚本。但是,当我发送消息时,会创建一个事件,称为 'e',它是 doPost 函数的参数。这样,如果我向 bot1 发送消息,bot 1 和 bot 2 都会向我发送消息。我想要的是,如果我向 bot 1 发送消息,只有 bot 1 会回复我。
如果该问题得到解决,那么它就解决了原始问题,因为我不必编辑多个 google 应用程序脚本,因为现在每个机器人 运行 都由一个独立的 google 应用程序脚本和所有 google 应用程序脚本具有相同的代码,唯一的区别是令牌和 webappURL
Google 应用程序脚本 Web 应用程序不支持 url 中的路径参数 (https://script.google.com/*/exec/{path/token/unique_bot_id}
)。所以我认为您不能为多个机器人使用同一个脚本项目。从机器人接收到的数据似乎没有指定它正在将数据寻址到的机器人。因此,您对收到的数据没有任何独特的识别因素。
但是您可以使用多个脚本项目,每个脚本都指向一个父脚本。这样,当父脚本更新时,所有子脚本都使用父脚本。父脚本可能作为 library 发布或托管在另一个网络应用程序或网络主机中,并且 eval
d 在子脚本中。
我已经使用 google 应用程序脚本创建了一个可用的电报机器人。 但是,我 运行 遇到了一个问题,即在更新主代码时我必须更新多个不同的应用程序脚本。
我需要超过 1 个 google 应用程序脚本的原因是只有 1 个机器人可以 webhook 到一个网络应用程序 URL。我需要多个机器人,因为它针对不同的用户群,但功能是相同的。
代码长约 +700 行。
有什么方法可以更新主 google 应用程序脚本而无需更新其他 google 应用程序脚本?
编辑 1:
为了更好地解释我的问题,我将根据我编写的代码来说明它。
var token = "1xxx"; // bot 1
var token2 = "yyy" // bot 2
var telegramUrl = "https://api.telegram.org/bot" + token;
var telegramUrl2 = "https://api.telegram.org/bot" + token2;
function setWebhook() {
var url = telegramUrl + "/setWebhook?url=" + webAppUrl;
var response = UrlFetchApp.fetch(url);
}
function setWebhook2() {
var url = telegramUrl2 + "/setWebhook?url=" + webAppUrl;
var response = UrlFetchApp.fetch(url);
}
function doPost(e) {
var contents = JSON.parse(e.postData.contents);
}
所以这就是我试图做的,通过将 2 个机器人连接到一个 google 应用程序脚本。但是,当我发送消息时,会创建一个事件,称为 'e',它是 doPost 函数的参数。这样,如果我向 bot1 发送消息,bot 1 和 bot 2 都会向我发送消息。我想要的是,如果我向 bot 1 发送消息,只有 bot 1 会回复我。
如果该问题得到解决,那么它就解决了原始问题,因为我不必编辑多个 google 应用程序脚本,因为现在每个机器人 运行 都由一个独立的 google 应用程序脚本和所有 google 应用程序脚本具有相同的代码,唯一的区别是令牌和 webappURL
Google 应用程序脚本 Web 应用程序不支持 url 中的路径参数 (https://script.google.com/*/exec/{path/token/unique_bot_id}
)。所以我认为您不能为多个机器人使用同一个脚本项目。从机器人接收到的数据似乎没有指定它正在将数据寻址到的机器人。因此,您对收到的数据没有任何独特的识别因素。
但是您可以使用多个脚本项目,每个脚本都指向一个父脚本。这样,当父脚本更新时,所有子脚本都使用父脚本。父脚本可能作为 library 发布或托管在另一个网络应用程序或网络主机中,并且 eval
d 在子脚本中。