Что нового

Чтение из .INI и повторение действия столько раз, сколько прописано в .INI

scanfail

Знающий
Сообщения
244
Репутация
17
Здравствуйте.

На работе возникла нужда написать скрипт для облегчения рутинного действия.

Есть сайт, откуда нужно качать отчеты раз в месяц. У каждого отчета есть айди.

Написал такой скрипт под 1 айди:
Код:
Global $Path_Ini = @ScriptDir & "\ID.txt"     ;Текстовой файл с айди отчета
Global $URL = "http://1.1.1.1/c=salerepfp&srep_id="     ;Ссылка на отчеты

#Region ~~~Otchet~~~
$GetID_1 = IniRead($Path_Ini, "ID", "1", "ERROR")     ;Читаем данные первого айди
$Otchet_1 = $URL & $GetID_1     ;Соединяем ссылку с айди и получаем ссылку на конкретный отчет

Sleep(1000)
MouseClick("left", "600", "40", 3)    ;Клик на раздел ввода ссылки в браузере
Sleep(200)
Send($Otchet_1)     ;Вставляем ссылку на отчет
Sleep(200)
Send("{ENTER}")     ;Переходим по ссылке
Sleep(200)
MouseClick("left", "1145", "715", 1)     ;Скачиваем отчет
Sleep(2000)
MouseClick("left", "1340", "700", 1)     ;Закрываем вкладку скачивания
#EndRegion ~~~Otchet~~~


Так вот, таких отчетов бывает 100+, хотелось бы написать умный скрипт, который после завершения первого действия, перейдет ко второму, пока не завершит все айдишки.
Можно конечно же просто копировать этот код и сделать тысяча строк повторного кода, но это слишком просто, да и количество отчетов через каждый промежуток времени меняются.

Прошу помочь опытных пользователей.
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
247
Не вникал в сами действия по получению отчётов. но если Вас тот код, что выше устраивает, тогда можно так :
Код:
$Otchet = IniReadSection($Path_Ini, 'ID');Читаем всю секцию 'ID' в массив '$Otchet'
If Not @error Then

	For $i = 1 To $Otchet[0][0]

		$Otchet_1 = $URL & $Otchet[$i][1] ;Соединяем ссылку с айди и получаем ссылку на конкретный отчет

		Sleep(1000)
		MouseClick("left", "600", "40", 3) ;Клик на раздел ввода ссылки в браузере
		Sleep(200)
		Send($Otchet_1) ;Вставляем ссылку на отчет
		Sleep(200)
		Send("{ENTER}") ;Переходим по ссылке
		Sleep(200)
		MouseClick("left", "1145", "715", 1) ;Скачиваем отчет
		Sleep(2000)
		MouseClick("left", "1340", "700", 1) ;Закрываем вкладку скачивания

	Next
EndIf
 
Автор
S

scanfail

Знающий
Сообщения
244
Репутация
17
ra4o сказал(а):
Не вникал в сами действия по получению отчётов. но если Вас тот код, что выше устраивает, тогда можно так :
Код:
$Otchet = IniReadSection($Path_Ini, 'ID');Читаем всю секцию 'ID' в массив '$Otchet'
If Not @error Then

	For $i = 1 To $Otchet[0][0]

		$Otchet_1 = $URL & $Otchet[$i][1] ;Соединяем ссылку с айди и получаем ссылку на конкретный отчет

		Sleep(1000)
		MouseClick("left", "600", "40", 3) ;Клик на раздел ввода ссылки в браузере
		Sleep(200)
		Send($Otchet_1) ;Вставляем ссылку на отчет
		Sleep(200)
		Send("{ENTER}") ;Переходим по ссылке
		Sleep(200)
		MouseClick("left", "1145", "715", 1) ;Скачиваем отчет
		Sleep(2000)
		MouseClick("left", "1340", "700", 1) ;Закрываем вкладку скачивания

	Next
EndIf

Спасибо большое! Работает как часы!
На основание вашего скрипта, попытался сделать еще один, схожий, но уж по печати скачанных ранее файлов.

Код:
#include <Excel.au3>

Global $Path_Ini = @ScriptDir & "\ID_File.txt"
Global $Folder = "C:\Users\Downloads\"
Global $prnt = "Canon LBP2900"

HotKeySet("{ESC}", "_Terminate")

$File = IniReadSection($Path_Ini, 'File')
If Not @error Then

	For $i = 1 To $File[0][0]

	$File = $Folder & $File[$i][1]

	Local $oExcel = _Excel_Open(False); Здесь указываете, что открывается документ в фоне
	Local $oWorkbook = _Excel_BookOpen($oExcel,$File)
	Sleep(2000)
	$oExcel.Columns('G').EntireColumn.AutoFit ;Авто изменение размера колонок
	$oExcel.Columns('K').EntireColumn.AutoFit
	$oExcel.Columns('L').EntireColumn.AutoFit
	$oExcel.Columns('R').EntireColumn.AutoFit
_Excel_Print($oExcel, $oExcel.ActiveSheet,Default,$prnt)
_Excel_Close($oExcel,False)
	Sleep(4000)
Next
EndIf

Func _Terminate()
	Exit 0
EndFunc


Но выдает ошибку в коде, а если быть точнее, то вот:
Код:
$oExcel.Columns('G').EntireColumn.AutoFit
$oExcel^ ERROR


Не могли бы вы пожалуйста помочь?
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
247
Какая ошибка ? У меня работает так :
Код:
$oExcel.Columns('A:E').EntireColumn.AutoFit

Хотя и в таком виде, как у Вас тоже отрабатывает без ошибки.
 
Верх