You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Google App Script从URL上传图片至Slack而非仅链接?

解决方案

要保留每小时的图片历史,你需要把图片上传到Slack服务器,而不是仅发送图片链接。因为Slack不会缓存外部链接的图片,每次打开历史消息都会重新加载当前URL的最新内容,导致旧消息显示新图片。改用Slack的files.upload API就能解决这个问题,步骤如下:

1. 准备Slack Bot Token

  • 在Slack开发者后台创建Bot,申请files:write权限(用于上传文件)
  • 复制生成的Bot Token(格式为xoxb-xxx)

2. 修改Google App Script代码

替换原来的Webhook调用逻辑,改为先抓取图片二进制数据,再调用files.upload接口上传:

function SendToSlack() {
  // 配置参数
  const SLACK_BOT_TOKEN = "xoxb-你的BotToken";
  const IMAGE_URL = "https://imageurl"; // 你的图片源URL
  const CHANNEL_NAME = "updates"; // 目标频道名或ID
  const MESSAGE_TEXT = "Hourly Update"; // 附带的消息文本

  try {
    // 1. 抓取图片的二进制数据
    const imageResponse = UrlFetchApp.fetch(IMAGE_URL, { muteHttpExceptions: true });
    if (imageResponse.getResponseCode() !== 200) {
      throw new Error(`获取图片失败,状态码:${imageResponse.getResponseCode()}`);
    }
    const imageBlob = imageResponse.getBlob();

    // 2. 调用Slack files.upload API上传图片
    const payload = {
      channels: CHANNEL_NAME,
      initial_comment: MESSAGE_TEXT,
      file: imageBlob,
      filename: `hourly_update_${new Date().toISOString().slice(0, 19)}.png`, // 用时间戳命名,方便区分历史
      title: "Hourly Update Image"
    };

    const options = {
      method: "post",
      headers: { Authorization: `Bearer ${SLACK_BOT_TOKEN}` },
      payload: payload,
      muteHttpExceptions: true
    };

    const slackResponse = UrlFetchApp.fetch("https://slack.com/api/files.upload", options);
    const responseData = JSON.parse(slackResponse.getContentText());
    
    if (!responseData.ok) {
      throw new Error(`Slack上传失败:${responseData.error}`);
    }
    console.log("图片上传成功");
  } catch (error) {
    console.error("执行出错:", error.message);
  }
}

关键说明

  • 上传后的图片会永久存储在Slack服务器,历史消息中显示的是当时上传的版本,不会随原URL更新而变化
  • 用时间戳作为文件名,能快速区分不同时段的历史图片
  • 确保Bot Token拥有files:write权限,否则会出现权限错误

内容的提问来源于stack exchange,提问作者MJB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 10:50:26