const ВЕБХУК = ""; const УПОМИНАНИЕ = "" ; // Тут можно тегнуть роль/человека const ЦВЕТ = 7519001; // Цвет линии слева - Цвета тут: www.spycolor.com const ЗАГОЛОВОК = "ЗАГОЛОВОК"; // Заголовок (Можно оставить пустым) const ССЫЛКА = ""; // Делает из Вашего заголовка ссылку, по которой можно перейти. (Можно оставить пустым) const ПОДЗАГОЛОВОК = "ПОДЗАГОЛОВОК"; // Подзаголовок (Можно оставить пустым) const КАРТИНКА_СПРАВА = ""; // Картинка будет снизу гугл формы (Можно оставить пустым) const КАРТИНКА_СНИЗУ = ""; // Картинка будет снизу гугл формы (Можно оставить пустым) // Авторский блок // const ИМЯ = ""; // Имя автора (Можно оставить пустым) const ССЫЛКА_2 = ""; // Ссылка на источник (Можно оставить пустым) const АВАТАР = ""; // Аватар автора (Можно оставить пустым) // Подпись // const ПОДПИСЬ = ""; // Текст снизу (Можно оставить пустым) const ИКОНКА = ""; // Работает только, если имеется подпись (Можно оставить пустым) const ВРЕМЯ_ОТПРАВКИ = false; // Время поста снизу. true - включено / false - выключено // !!!! ВНИМАНИЕ !!!! ЕСЛИ ВЫ НЕ ЗНАЕТЕ, КАК РАБОТАЕТ КОД НИЖЕ, НИЧЕГО НЕ ТРОГАЙТЕ // function onSubmit(e) { const response = e.response.getItemResponses(); let items = []; for (const responseAnswer of response) { const question = responseAnswer.getItem().getTitle(); const answer = responseAnswer.getResponse(); let parts = [] try { parts = answer.match(/[\s\S]{1,1024}/g) || []; } catch (e) { parts = answer; } if (!answer) { continue; } for (const [index, part] of Object.entries(parts)) { if (index == 0) { items.push({ "name": question, "value": part, "inline": false }); } else { items.push({ "name": question.concat(" (cont.)"), "value": part, "inline": false }); } } } var TIME = ""; if (ВРЕМЯ_ОТПРАВКИ) { TIME = new Date().toISOString(); } var options = { "method": "post", "headers": { "Content-Type": "application/json", }, "payload": JSON.stringify({ "content": УПОМИНАНИЕ, "embeds": [{ "title": ЗАГОЛОВОК, "color": ЦВЕТ, "description": ПОДЗАГОЛОВОК, "url": ССЫЛКА, "fields": items, "image": { "url": КАРТИНКА_СНИЗУ }, "author": { "name": ИМЯ, "url": ССЫЛКА_2, "icon_url": АВАТАР }, "thumbnail": { "url": КАРТИНКА_СПРАВА }, "footer": { "text": ПОДПИСЬ, "icon_url": ИКОНКА, }, "timestamp": TIME }], }) }; UrlFetchApp.fetch(ВЕБХУК, options); };
В гугл форме у меня, присутствуют поля, где надо вставить фото. Как сделать так, что бы такая гугл форма отправлялась в дискорд вместе с этими фото и не в 1 канал а в 3 ?
Что нужно написать чтобы при отправки формы в дс писался ник автора в дискорде? не просто тег который ты ставишь изначально а именно тег написавшего данную форму.
Привет, при наличии нескольких ответов массив разбивается на Вопрос : Ответ Вопрос (cont.) : Ответ. Как фиксить, если я хочу чтобы он выдавал в строку выбранные варианты for (const [index, part] of Object.entries(parts)) { if (index == 0) { items.push({ "name": question, "value": part, "inline": false }); } else { items.push({ "name": question.concat(" (cont.)"), "value": part, "inline": false }); } }
const ВЕБХУК = "";
const УПОМИНАНИЕ = "" ; // Тут можно тегнуть роль/человека
const ЦВЕТ = 7519001; // Цвет линии слева - Цвета тут: www.spycolor.com
const ЗАГОЛОВОК = "ЗАГОЛОВОК"; // Заголовок (Можно оставить пустым)
const ССЫЛКА = ""; // Делает из Вашего заголовка ссылку, по которой можно перейти. (Можно оставить пустым)
const ПОДЗАГОЛОВОК = "ПОДЗАГОЛОВОК"; // Подзаголовок (Можно оставить пустым)
const КАРТИНКА_СПРАВА = ""; // Картинка будет снизу гугл формы (Можно оставить пустым)
const КАРТИНКА_СНИЗУ = ""; // Картинка будет снизу гугл формы (Можно оставить пустым)
// Авторский блок //
const ИМЯ = ""; // Имя автора (Можно оставить пустым)
const ССЫЛКА_2 = ""; // Ссылка на источник (Можно оставить пустым)
const АВАТАР = ""; // Аватар автора (Можно оставить пустым)
// Подпись //
const ПОДПИСЬ = ""; // Текст снизу (Можно оставить пустым)
const ИКОНКА = ""; // Работает только, если имеется подпись (Можно оставить пустым)
const ВРЕМЯ_ОТПРАВКИ = false; // Время поста снизу. true - включено / false - выключено
// !!!! ВНИМАНИЕ !!!! ЕСЛИ ВЫ НЕ ЗНАЕТЕ, КАК РАБОТАЕТ КОД НИЖЕ, НИЧЕГО НЕ ТРОГАЙТЕ //
function onSubmit(e) {
const response = e.response.getItemResponses();
let items = [];
for (const responseAnswer of response) {
const question = responseAnswer.getItem().getTitle();
const answer = responseAnswer.getResponse();
let parts = []
try {
parts = answer.match(/[\s\S]{1,1024}/g) || [];
} catch (e) {
parts = answer;
}
if (!answer) {
continue;
}
for (const [index, part] of Object.entries(parts)) {
if (index == 0) {
items.push({
"name": question,
"value": part,
"inline": false
});
} else {
items.push({
"name": question.concat(" (cont.)"),
"value": part,
"inline": false
});
}
}
}
var TIME = "";
if (ВРЕМЯ_ОТПРАВКИ) {
TIME = new Date().toISOString();
}
var options = {
"method": "post",
"headers": {
"Content-Type": "application/json",
},
"payload": JSON.stringify({
"content": УПОМИНАНИЕ,
"embeds": [{
"title": ЗАГОЛОВОК,
"color": ЦВЕТ,
"description": ПОДЗАГОЛОВОК,
"url": ССЫЛКА,
"fields": items,
"image": {
"url": КАРТИНКА_СНИЗУ
},
"author": {
"name": ИМЯ,
"url": ССЫЛКА_2,
"icon_url": АВАТАР
},
"thumbnail": {
"url": КАРТИНКА_СПРАВА
},
"footer": {
"text": ПОДПИСЬ,
"icon_url": ИКОНКА,
},
"timestamp": TIME
}],
})
};
UrlFetchApp.fetch(ВЕБХУК, options);
};
Добрый утро у меня не работает сайт где вы в начале ролика заходили 0:54 Вот на этой минуте.
В гугл форме у меня, присутствуют поля, где надо вставить фото. Как сделать так, что бы такая гугл форма отправлялась в дискорд вместе с этими фото и не в 1 канал а в 3 ?
никак, через вебхук это невозможно никаким образом, но можно попробовать сделать бота
а как сделать, чтобы в зависимости от ответа в форме тег определенной роли приходил?
Что нужно написать чтобы при отправки формы в дс писался ник автора в дискорде? не просто тег который ты ставишь изначально а именно тег написавшего данную форму.
Не знаю
сейчас знаешь как это сделать?
Cпасибо, очень помогла информация)
а как делать типо вопросм из этого типо тип ставляет сыллку на фото в ответе и она появляется типо после отправки
Не понимаю вопроса твоего
@@Roman-Romanich гугл форма отправляется без кликабельной ссылки
Что делать если ссылки из ответа (текст (абзац)) умножаются несколькораз с добавлением [()]
Как сделать чтобы гугл форма отправлялась в определенный канал дискорда в зависимости от ответа?
Скорее всего переписывать код
Привет, при наличии нескольких ответов массив разбивается на Вопрос : Ответ Вопрос (cont.) : Ответ. Как фиксить, если я хочу чтобы он выдавал в строку выбранные варианты for (const [index, part] of Object.entries(parts)) {
if (index == 0) {
items.push({
"name": question,
"value": part,
"inline": false
});
} else {
items.push({
"name": question.concat(" (cont.)"),
"value": part,
"inline": false
});
}
}
у меня 2 раза подрят отправляется как пофиксить стоит false
Пофиксил?
У меня слишком большая форма, и в вебхук помещается мало ответов. Есть возможность расширения?
Посмотри видос 2022 года. Там код другой, может поможет
а можно отправлять картинку в зависимости от выбранного варианта?
Нет
Очень помогло, спасибо.🎉
брат, спасибо тебе большое)
Есть ещё 2 кода других. Если вдруг этот не поможет по каким то причинам
Как мне сделать форму внутри дискорда?
Никак
У меня почему то отправляется 2 формы
Как сделать так, чтобы данный бот отправлял результаты прохождения гугл теста? Т.е Кол-во баллов набранный
Код переписывать
у меня почему то 2 раза бот отправляет сообщение
Стрим ?
Брат пжжж мож помочь на мой сервер сделать пжжжжжжжжжжж на телефоне не возможно пжж брат пжжжжжжжжжж
Видимо уже не актуально
Все работает до сих пор. На канале есть и другие способы привязки. Там другой код используется
Ошибка
TypeError: Cannot read properties of undefined (reading 'response')
onSubmit @ Код.gs:29
const response = e.response.getItemResponses();
вот в этой строке выдает ошибку
Не правильно что то делаешь
Такая же ошибка
@@Roman-Romanich я делаю как на видео значит я рукожопый? Или Автор не хочет разбираться в ситуации?
Да. Именно так. Значит ты рукожопый