将电子表格图形的图像发送到 Telegram 时,发送的图像总是相同的过时

When sending image of a spreadsheet graph to Telegram, the image sent is always the same outdated

我尝试发送到 Telegram 的图表图像是这样的:

https://docs.google.com/spreadsheets/d/e/2PACX-1vRYIAQWrNu1P9fc0CzBXkMb2jsOCKhrRMoakqeq73BVWHNa6ukJHHK00ZvfNi5QQB2Pr7ACdw3yCBwV/pubchart?oid=1479223143&format=image

我用的运费公式是这样的:

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.
  • 在这种情况下,文件需要公开共享。请注意这一点。

参考文献: