将电子表格图形的图像发送到 Telegram 时,发送的图像总是相同的过时
When sending image of a spreadsheet graph to Telegram, the image sent is always the same outdated
我尝试发送到 Telegram 的图表图像是这样的:
我用的运费公式是这样的:
function EnviarTelegram(botSecret, chatId, photoUrl, caption) {
var response = UrlFetchApp.fetch("https://api.telegram.org/bot" + botSecret + "/sendPhoto?caption=" + encodeURIComponent(caption) + "&photo=" + encodeURIComponent(photoUrl) + "&chat_id=" + chatId + "&parse_mode=HTML");
}
但是当我添加图形link时,它不会发送更新版本,它总是在我第一次发布图像时发送图像的第一个版本。
我使用的公式如下所示:
=ENVIARTELEGRAM(W1,W2,"https://docs.google.com/spreadsheets/d/e/2PACX-1vRYIAQWrNu1P9fc0CzBXkMb2jsOCKhrRMoakqeq73BVWHNa6ukJHHK00ZvfNi5QQB2Pr7ACdw3yCBwV/pubchart?oid=1479223143&format=image",W19)
正确的图片:
总是发送到 Telegram 的旧图像:
有什么方法可以强制更新发送到 Telegram 的这张图片吗?
解决方法:
- 根据评论中的讨论,我想提出以下解决方法。
- 幸运的是,当使用 UrlFetchApp 检索图像时,我可以看到您问题中的上图。我认为这可能会被使用。如果在当前阶段,您要使用的 API 无法检索具有相同 URL 的最新图像,作为解决方法,我想将最新图像创建为 [=57= 上的文件] 驱动发送图片URL
- 根据您的评论,我还确认您使用
https://drive.google.com/file/d/1zdEBhYircl9-P9Wtx-QyTgmxgskGLcEq/
作为 photoUrl
的值。在这种情况下,无法正确显示图像文件。我认为端点需要修改。
当这个包含修改点的解决方法是一个脚本时,它变成如下。
示例脚本 1:
在此示例脚本中,从 https://docs.google.com/spreadsheets/d/e/2PACX-###/pubchart?oid=###&format=image
检索图表图像并将图像创建为文件,然后通过修改图像大小检索缩略图 link。
在您使用此脚本之前,please enable Drive API at Advanced Google services。
const url = "https://docs.google.com/spreadsheets/d/e/2PACX-1vRYIAQWrNu1P9fc0CzBXkMb2jsOCKhrRMoakqeq73BVWHNa6ukJHHK00ZvfNi5QQB2Pr7ACdw3yCBwV/pubchart?oid=1479223143&format=image";
const res = UrlFetchApp.fetch(url);
const file = DriveApp.createFile(res.getBlob());
const outputUrl = Drive.Files.get(file.getId()).thumbnailLink.replace("=s220", "=s1000");
console.log(outputUrl) // You can see the link at the log.
示例脚本 2:
在此示例脚本中,从 https://docs.google.com/spreadsheets/d/e/2PACX-###/pubchart?oid=###&format=image
检索图表图像并将图像创建为文件,然后公开共享该文件并检索 webContentLink
。
const url = "https://docs.google.com/spreadsheets/d/e/2PACX-1vRYIAQWrNu1P9fc0CzBXkMb2jsOCKhrRMoakqeq73BVWHNa6ukJHHK00ZvfNi5QQB2Pr7ACdw3yCBwV/pubchart?oid=1479223143&format=image";
const res = UrlFetchApp.fetch(url);
const file = DriveApp.createFile(res.getBlob());
file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);
const outputUrl = "https://drive.google.com/uc?export=download&id=" + file.getId();
console.log(outputUrl) // You can see the link at the log.
- 在这种情况下,文件需要公开共享。请注意这一点。
参考文献:
我尝试发送到 Telegram 的图表图像是这样的:
我用的运费公式是这样的:
function EnviarTelegram(botSecret, chatId, photoUrl, caption) {
var response = UrlFetchApp.fetch("https://api.telegram.org/bot" + botSecret + "/sendPhoto?caption=" + encodeURIComponent(caption) + "&photo=" + encodeURIComponent(photoUrl) + "&chat_id=" + chatId + "&parse_mode=HTML");
}
但是当我添加图形link时,它不会发送更新版本,它总是在我第一次发布图像时发送图像的第一个版本。
我使用的公式如下所示:
=ENVIARTELEGRAM(W1,W2,"https://docs.google.com/spreadsheets/d/e/2PACX-1vRYIAQWrNu1P9fc0CzBXkMb2jsOCKhrRMoakqeq73BVWHNa6ukJHHK00ZvfNi5QQB2Pr7ACdw3yCBwV/pubchart?oid=1479223143&format=image",W19)
正确的图片:
总是发送到 Telegram 的旧图像:
有什么方法可以强制更新发送到 Telegram 的这张图片吗?
解决方法:
- 根据评论中的讨论,我想提出以下解决方法。
- 幸运的是,当使用 UrlFetchApp 检索图像时,我可以看到您问题中的上图。我认为这可能会被使用。如果在当前阶段,您要使用的 API 无法检索具有相同 URL 的最新图像,作为解决方法,我想将最新图像创建为 [=57= 上的文件] 驱动发送图片URL
- 根据您的评论,我还确认您使用
https://drive.google.com/file/d/1zdEBhYircl9-P9Wtx-QyTgmxgskGLcEq/
作为photoUrl
的值。在这种情况下,无法正确显示图像文件。我认为端点需要修改。
当这个包含修改点的解决方法是一个脚本时,它变成如下。
示例脚本 1:
在此示例脚本中,从 https://docs.google.com/spreadsheets/d/e/2PACX-###/pubchart?oid=###&format=image
检索图表图像并将图像创建为文件,然后通过修改图像大小检索缩略图 link。
在您使用此脚本之前,please enable Drive API at Advanced Google services。
const url = "https://docs.google.com/spreadsheets/d/e/2PACX-1vRYIAQWrNu1P9fc0CzBXkMb2jsOCKhrRMoakqeq73BVWHNa6ukJHHK00ZvfNi5QQB2Pr7ACdw3yCBwV/pubchart?oid=1479223143&format=image";
const res = UrlFetchApp.fetch(url);
const file = DriveApp.createFile(res.getBlob());
const outputUrl = Drive.Files.get(file.getId()).thumbnailLink.replace("=s220", "=s1000");
console.log(outputUrl) // You can see the link at the log.
示例脚本 2:
在此示例脚本中,从 https://docs.google.com/spreadsheets/d/e/2PACX-###/pubchart?oid=###&format=image
检索图表图像并将图像创建为文件,然后公开共享该文件并检索 webContentLink
。
const url = "https://docs.google.com/spreadsheets/d/e/2PACX-1vRYIAQWrNu1P9fc0CzBXkMb2jsOCKhrRMoakqeq73BVWHNa6ukJHHK00ZvfNi5QQB2Pr7ACdw3yCBwV/pubchart?oid=1479223143&format=image";
const res = UrlFetchApp.fetch(url);
const file = DriveApp.createFile(res.getBlob());
file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);
const outputUrl = "https://drive.google.com/uc?export=download&id=" + file.getId();
console.log(outputUrl) // You can see the link at the log.
- 在这种情况下,文件需要公开共享。请注意这一点。