@Shigobik

Вебхук через гугл таблицу, как отправить изображения в дискорд?

Знаю, что можно отправить в дискорд вебхук через гугл скрипт, не используя ботов, сторонние сайты и т.д. Если хорошо скрипт написать, просто пишешь в ячейку таблицы сообщение, запускаешь скрипт, он отправляет. Вся документалка описано в мануале дискорда.
Но тут проблема. Через вебхук можно отправлять изображения. Там до 10 в одном сообщении.
Но как это делать, если вебхук отправлен через гугл таблицу? Там можно засунуть изображение в ячейку таблицы или поверх, но так он естественно не отправляет, это ведь не текст...
Собственно важный вопрос, может ли он вообще отправлять или нет? Вдруг там таблица просто не позволяет реализовать это.
  • Вопрос задан
  • 151 просмотр
Решения вопроса 1
ProgrammerForever
@ProgrammerForever Куратор тега Google Sheets
Учитель, автоэлектрик, программист, музыкант
Если можно отправлять хоть чем-то, то наверняка можно это отправить и гугл таблицей.
Не знаю деталей API, если там blob отправляется, то надо получать файл, делать blob, упаковывать в запрос и отправлять по API в дискорд. Если ссылка - то то же самое, только надо как-то получить ссылку на изображение, возможно через Drive API.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@dim5x
ЗИ, ИБ.
В таблицах не работает метод .getUrl() - не получается взять ссылку на изображения, заведён баг - https://issuetracker.google.com/issues/215575446?pli=1.

Но в таблицах можно хранить урлы картинок текстом и отправлять, соответственно, как текст.
В Дискорд будут приходить картинки.
function sendDiscordMessage() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var cell  = sheet.getActiveCell();
  var cellValue = cell.getValue();
  
  var webhookUrl = 'https://discord.com/api/webhooks................................';
  
  var payload = {
    "content": 'content',
    "embeds": [{
      "title": 'title',
      "description": "description",
      "color": 16711680,
      "image": {
        "url": cellValue  
      }
    }]
  };
  
  var options = {
    "method": "POST",
    "payload": JSON.stringify(payload),
    "headers": {
      "Content-Type": "application/json"     
    },
  };

  var response = UrlFetchApp.fetch(webhookUrl, options);
  var status = response.getResponseCode();
  if (status === 200 || status === 204) {
    Logger.log("Discord message sent successfully.");
  } else {
    Logger.log("Failed to send Discord message. Status code: " + status);
  }
}

65e21853339f7758988014.png
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы