Skip to content

Instantly share code, notes, and snippets.

@agran
Last active December 2, 2025 09:29
Show Gist options
  • Select an option

  • Save agran/096a3866312d19d50e81bf13d64a1c8f to your computer and use it in GitHub Desktop.

Select an option

Save agran/096a3866312d19d50e81bf13d64a1c8f to your computer and use it in GitHub Desktop.
ЖёлтоЗелёные ЯндексФормы.js
// ==UserScript==
// @name ЖёлтоЗелёные анкеты
// @namespace Violentmonkey Scripts
// @match https://forms.yandex.ru/u/68b699a1f47e732c6827d3ff/*
// @grant none
// @version 3.0
// ==/UserScript==
var name1 = 'Иванов';
var name2 = 'Иван';
var name3 = 'Иванович';
var tel = '+79180008892';
var pasp = '0215 232023';
var dr = '1994-12-18'; // Формат YYYY-MM-DD для localStorage
var mestoPosadki = ['9008956053793110'];
// Места посадки
// 9008956053793110 - Галерея
// 1756799074340 - Филатова
// 1756799082669 - Селезнёва
// 1756799095730 - ТЭЦ
// 1756799101166 - Микрохирургия
var whatsappChat;
function pad(num, size) {
num = Number(num).toString();
while (num.length < size) num = "0" + num;
return num;
}
(function() {
'use strict';
window.addEventListener('load', function() {
whatsappChat = prompt('Введите имя WhatsApp чата:', '');
if(whatsappChat != null){
setTimeout(function(){
const regex = /([0-9\-]{1,5})\.([0-9]{1,2})\.([0-9]{1,4})([\w|\W]*)/gm;
var result = regex.exec(whatsappChat);
console.dir(result);
var day = result[1];
if(day.includes('-')){
day = day.split('-')[0];
}
var month = result[2];
var god = result[3];
if(god.length == 2){
god = '20' + god;
}
// Формат для localStorage
var pohodDate = god + "-" + pad(month, 2) + "-" + pad(day, 2);
var pohodName = result[4].replace(/[^a-zа-я0-9\s\-]/gi, '');
console.log('Дата похода для localStorage:', pohodDate);
console.log('Название похода:', pohodName);
// Ключ localStorage
const storageKey = 'survey-68b699a1f47e732c6827d3ff';
// Получаем текущие данные
const currentData = JSON.parse(localStorage.getItem(storageKey) || '{}');
// Обновляем данные в localStorage
const updatedData = {
...currentData,
"answer_short_text_9008956053573832": pohodName,
"answer_date_9008956053608350": pohodDate,
"answer_short_text_9008956053654664": name1,
"answer_short_text_9008956053674264": name2,
"answer_short_text_9008956053684434": name3,
"answer_date_9008956053707002": dr,
"answer_short_text_9008956053726062": pasp,
"answer_short_text_9008956053884332": tel,
"answer_short_text_9008956053929702": 'Заполнено автоматически',
"answer_choices_9008956053793100": mestoPosadki,
"id-question-92764092": true,
"answer_boolean_9008956053954648": true
};
// Сохраняем в localStorage
localStorage.setItem(storageKey, JSON.stringify(updatedData));
console.log('Данные обновлены в localStorage');
// Принудительно обновляем React-компонент
function forceReactUpdate() {
const storageKey = 'survey-68b699a1f47e732c6827d3ff';
const currentData = JSON.parse(localStorage.getItem(storageKey));
// Проверяем текущие данные
console.log('Текущие данные:', currentData);
// Принудительно обновляем все React-компоненты
const event = new Event('storage', { bubbles: true, cancelable: true });
window.dispatchEvent(event);
// Ищем и обновляем все скрытые React-корни
for (const key in window) {
if (key.startsWith('__reactInternalInstance$') || key.startsWith('__reactFiber$')) {
try {
const root = window[key];
if (root && root.return && root.return.stateNode && root.return.stateNode.forceUpdate) {
root.return.stateNode.forceUpdate();
}
} catch (e) {}
}
}
console.log('Принудительное обновление выполнено');
}
forceReactUpdate();
// Дополнительная проверка через 2 секунды
setTimeout(() => {
const currentData = JSON.parse(localStorage.getItem(storageKey));
console.log('Проверка localStorage:', currentData);
// Если данные не применились, пробуем еще раз
if (currentData.answer_date_9008956053608350 !== pohodDate) {
console.log('Данные не применились, пробуем еще раз...');
localStorage.setItem(storageKey, JSON.stringify(updatedData));
forceReactUpdate();
}
}, 2000);
}, 1000);
}
});
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment