Следующий скрипт показывает, как сохранить входящие смс сообщения, принятые программой nhsms, в файл Microsoft Excel. Скрипт сохраняет информацию о входящих сообщениях: номер отправителя, дату и время отправки, текст сообщения. Скрипт может быть использован для удобного просмотра и обработки входящих сообщений.

Скрипт будет вызываться для каждого принятого смс (как входящего сообщения, так и отчёта о статусе), для этого необходимо добавить его в конфигурацию программы nhsms.

Скрипт проверяет, что это входящее сообщение с текстом (его тип SMS-DELIVER), определяет число строк на рабочем листе Excel и добавляет в конец новую строку с номером отправителя, датой и временем отправки, текстом сообщения.

var wsh_shell = WScript.CreateObject("WScript.Shell");

// Проверяем, если это не входящее смс, то выходим
var message_type  = wsh_shell.ExpandEnvironmentStrings("%sms_type%");
if ( message_type != "SMS-DELIVER" )
    WScript.Quit(0);

var message_phone = wsh_shell.ExpandEnvironmentStrings("%sms_sender%");
var message_sent_time = wsh_shell.ExpandEnvironmentStrings("%sms_senttime%");
var message_text = wsh_shell.ExpandEnvironmentStrings("%sms_messagetext%");

// имя файла Excel
var excel_file_name = wsh_shell.CurrentDirectory + "\\" +  
    "incoming.xlsx";
 
// номер листа Excel
var excel_worksheet_number = 1; 

var excel = WScript.CreateObject("Excel.Application");
var excel_workbook = excel.Workbooks.Open(excel_file_name);
var excel_worksheet = excel_workbook.Worksheets(excel_worksheet_number);

var row_number = excel_worksheet.Cells(excel_worksheet.Rows.Count,"A").
   End(-4162).Row + 1;

excel_worksheet.Cells(row_number,1).Value = message_phone;
excel_worksheet.Cells(row_number,2).Value = message_sent_time;
excel_worksheet.Cells(row_number,3).Value = message_text;

// сохраняем и закрываем
excel_workbook.Save();
excel_workbook.Close();

Для тестирования скрипта используем командный файл, устанавливающий значения переменных и запускающий наш скрипт:

@echo off
set sms_type=SMS-DELIVER
set sms_sender=79001234567
set sms_senttime=2014-05-30 13:05:48
set sms_messagetext=текст входящего сообщения
cscript //nologo save-deliver-to-excel.js

Запустив командный файл несколько раз, видим входящие смс в файле Excel:

Пример сохранения входящих смс в файл Microsoft Excel

Все необходимые файлы (скрипт, тестовый командный файл, таблица Excel) можно загрузить по ссылке

Сохранение входящих смс в Excel
Метки:         

5 мыслей о “Сохранение входящих смс в Excel

  • 02.12.2020 в 14:44
    Постоянная ссылка

    Добрый день! Подскажите прописал скрипт в входящие сообщения, при запуске программы nhsms выдает scripts\save-deliver-to-excel\save-deliver-to-excel.js не является приложением win32

    В конфигурации программы — входящие сообщения — команды обработки входю сообщений у меня прописан путь к этому скрипту так и лежит он там :

    scripts\savexell\save-deliver-to-excel.js

    Ответ
      • 22.12.2020 в 10:53
        Постоянная ссылка

        Подскажите открыл В конфигурации программы — входящие сообщения — команды обработки добавил новый как вы сказали
        cscript //nologo save-deliver-to-excel.js

        Но он так и не записывает ничего в Exekl

        Ответ
        • 24.12.2020 в 15:41
          Постоянная ссылка

          Я тогда отвечал с телефона, поэтому написал упрощенно, чтобы показать, что запускать надо через cscript.exe или wscript.exe.
          Конечно, путь к файлу скрипта должен быть указан, то есть команда такая (если у вас путь scripts\savexell\):
          cscript //nologo scripts\savexell\save-deliver-to-excel.js
          Можно заменить cscript на wscript.
          Дальше, надо проверить через тестовый командный файл (описано в статье), что при его запуске происходит выполнение скрипта и добавление строк в Excel.
          Сейчас из вашего описания не понял, в каком именно месте проблема — то ли скрипт не запускается, то ли строка не добавляется.

          Ответ
          • 28.12.2020 в 12:10
            Постоянная ссылка

            Проблема в правильном написании команды! Сегодня попробую и отпишу. Спасибо большое, что отвечаете!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *