Почему скрипт в Excel Web не выполняется?

Каким образом я могу настроить скрипт для отслеживания изменений в веб-таблице и отправки уведомлений в телеграме при появлении новых строк с фамилиями и изменении статуса на "Готово"? У меня возникла ошибка TypeError: Cannot read properties of undefined (reading 'source'), и я не уверен, как ее исправить.
  • 1 февраля 2024 г. 6:49
Ответы на вопрос 2
Ошибка `TypeError: Cannot read properties of undefined (reading 'source')` указывает на то, что скрипт пытается получить доступ к свойству объекта, который не определен. Определение точного причины этой ошибки требует просмотра кода скрипта, но я дам общие советы по исправлению и настройке такого скрипта.

Во-первых, нужно убедиться, что скрипт использует правильные объекты API, доступные в Excel для веба, которые могут отличаться от тех, что доступны в настольной версии Excel.

Чтобы исправить ошибку и настроить скрипт для отслеживания изменений и отправки уведомлений в Telegram:

1. Убедитесь, что у вас есть действующий бот в Telegram и получите его токен.
2. Создайте скрипт Office Script, который будет работать в Excel для веба. Код может быть написан в редакторе скриптов, доступном в Excel для веба.

   Примерное содержание скрипта для отслеживания изменений:

   ```javascript
   async function onEdit(e) {
     try {
       // Получение информации о том, что было изменено
       const range = e.range; // e - это объект события, но в Office Scripts он не используется так же, как в Google Sheets или VBA
       const sheet = range.getWorksheet();
       const cellValue = range.getValue();

       // Логика для определения, была ли добавлена новая строка с фамилией
       // и/или изменен статус на "Готово"
       if (cellValue === "Готово") {
         // Отправить уведомление в Telegram
         await sendTelegramNotification("Статус изменен на 'Готово'");
       }
     } catch (error) {
       console.error("Ошибка: " + error.message);
     }
   }

   async function sendTelegramNotification(message) {
     const telegramToken = 'ВАШ_ТЕЛЕГРАМ_ТОКЕН';
     const chatId = 'ВАШ_CHAT_ID';
     const url = `https://api.telegram.org/bot${telegramToken}/sendMessage?chat_id=${chatId}&text=${encodeURIComponent(message)}`;

     // Тут будет отправка сообщения используя Office Script
     // На текущий момент непосредственная отправка HTTP запросов из Office Scripts не поддерживается,
     // вам потребуется использовать Power Automate или другие сервисы для интеграции с Telegram API.
   }
   ```
   
   Обратите внимание, что Office Scripts не поддерживает отправку HTTP запросов напрямую. Вместо этого можно использовать Microsoft Power Automate (ранее Microsoft Flow) для создания HTTP запроса в Telegram API. Ваш скрипт может вызвать Power Automate, который в свою очередь отправит сообщение в Telegram.

3. Настройте событие изменения ячейки. В Excel для веба встроенные события изменения ячейки не поддерживаются так же, как, например, в Google Sheets. Вам нужно будет использовать регулярное выполнение скрипта (например, через Power Automate) для проверки изменений на листе.

4. Если у вас есть доступ к Power Automate, создайте задание, которое будет регулярно запускать ваш скрипт Excel и в случае обнаружения изменений вызывать отправку уведомления в Telegram.

5. Проверьте своё решение, убедитесь, что уведомления приходят корректно.

Учтите, что это только общий план решения задачи. Реализация может потребовать более тщательной настройки в зависимости от специфики ваших данных в
задай вопрос тому же гигачату !! он тебе даже ответит 
системы предсказания текстов, на удивление, могут ошибаться или давать неточный ответ :)
да в принципе и человек не идеален...

включаешь свои мозги (без этого никак) и начинаешь доделывать функцию.
Похожие вопросы