Automator pitanje...workflow
(1 korsinik/a gleda/ju temu) (1) Gost

Automator pitanje...workflow


07.04.2011 | 20:52
Pozdrav,
Novi ovdje...imam pitanje u vezi automatora i kako napraviti jedan workflow.
Znači imam word dokument koji sadrži bezbroj tablica sa ponavljajucim podacima i ja te tablice trebam kopirati u Excel.
Sada jel netko ima kakav prijedlog ili slicno, ako treba jos informacija reci cu samo ne znam sto treba.
Eto nadam se da me necete odmah napasti, potpuni sam laik sto se tice automatora i programiranja.

Hvala!
Tema zaključana.
07.04.2011 | 21:20
Teško da će ti Automator u tome moći pomoći. Macov Office 2008 je ostao bez podrške za VBA (Visual Basic for Application), ali može ga se skriptati preko AppleScripta. AppleScript se, u teoriji, može izvršiti i preko Automatora, ali Automator je u toj priči potpuno suvišan s obzirom da se isti AppleScript može izvršiti i samostalno.

Može li AppleScript obaviti to što ti treba? Dok god je u pitanju parsanje Word dokumenta na način da skripta locira tablicu, pročita željene podatke i kopira ih u Excel onako kako si zamislio - vjerojatno može.

Ako je Word dokument pun identičnih tablica, zadatak je jednostavniji nego ako se parser mora "boriti" s detekcijom (različite) strukture svake tablice.

A koliko je zapravo komplicirano to napraviti, ovisi o odgovoru na sljedeće pitanje: kada bi kolegi delegirao da odradi to "pješke", umjesto tebe, možeš li mu, u točno definiranim koracima (algoritam!) zadati što TOČNO mora raditi?

Ako je, ponavljajući definirani algoritam (bez ikakvih dodatnih "pretpostavljanja" i rješavanja problema u hodu), moguće doći do rješenja, onda je jednako trivijalno (ili pak komplicirano, ovisno o tome kakav ti je algoritam) i u kodu (AppleScript).

"Loša vijest" je da parsanje isključuje "jednostavno rješenje" pa ako tražiš neku magiju s kojom bi, u Star Trek stilu, rekao Automatoru "kopiraj sve tablice iz Worda u Excel" - ne postoji. Još.
Tema zaključana.
07.04.2011 | 22:45
Da li taj Word sadrži i drugo nešto osim tih tablica koje želiš? Da li je to drugo običan tekst, slike, frameovi, ili opet tablice, samo što ih ne želiš?

Ja bi tu krenuo drugim pristupom. Snimio bi DOC kao HTML i onda ga najprije očistio od s*anja koje word ubaci (izbrisao bi sve prije <body> i poslije </body> i eventualno sve <style> tagove), što npr Text Wrangler riješi s 2 search & replacea pomoću regularnih izraza.

Nakon što ti ostane goli HTML imaš opet mogućnosti:

1. naći neki gotovi sw koji od HTML tablica napravi XLS
2. pomoću Text Wranglera ili nečeg sličnog napraviti još nekoliko regular expression search & replaceova, otprilike s ovom idejom:

\\n zamijeniti ničim (izbrisati sve prijelome redaka)

\\t zamijeniti ničim (izbrisati sve tabove)

bilo koji HTML tag osim onih koje želimo sačuvati (TABLE, TR, TD, eventualno BR i P) zamijeniti ničim

HTML tagove koje želimo sačuvati očistimo od dodataka, na primjer ovako:

<\\(/\\)TABLE[^>]*> zamijeniti sa <\\1TABLE>

</TABLE><TABLE><TR> zamjeniti s \\n\\n (dva prazna retka, da kasnije u excelu imaš vizualni delimiter tablica)

</TR><TR><TD> zamijeniti s \\n (prijelom retka tablice)

</TD><TD> zamijeniti s \\t (TAB između dvije ćelije tablice)

Kad to sve odradiš, dobio si tzv. tab-delimited format tablica koji možeš učitati u Excel, samo ga snimi s nastavkom .TXT. Ili možeš select all pa copy i onda paste u Excel.
Tema zaključana.
07.04.2011 | 22:51
Pardon, nisam uskladio terminologiju. "Regular expressions" je unixaški izraz. U Text Wrangleru se to krije pod opcijom "GREP" u dijalogu za search & replace. I možda sam se zabunio - možda je u TW-u \\r za prijelom retka, a ne \\n
Tema zaključana.
07.04.2011 | 23:06
Nakon think different HTML prijedloga, AppleScript rješenje mi izgleda jednostavnije. Uz pretpostavku da je u Wordu otvoren dokument u kojem su tablica (u primjeru pristupamo samo PRVOJ tablici u dokumentu) i da u Excelu imamo otvoren dokument u koji kopiramo tablicu, AppleScript, u rudimentalnom obliku, se svodi na sljedeće:

tell application "Microsoft Word"
  select table 1 of active document
  activate
  tell application "System Events" to keystroke "c" using {command down}
end tell

tell application "Microsoft Excel"
  activate
  tell application "System Events" to keystroke "v" using {command down}
end tell

U prvom dijelu se obraćamo Wordu i selektiramo PRVU tablicu aktivnog dokumenta (ovdje bi u petlji mogli selektirati jednu po jednu tablicu). Potom "aktiviramo" Word da bi reagirao na "tipke" koje "pritišćemo" u sljedećoj liniji - emuliramo CMD+c (copy).

U drugom dijelu selimo u Excel. Aktiviramo ga s istim razlogom i pejstamo prethodno kopiranu tablicu.

Sve drugo ovisi o tome što zapravo treba raditi s tablicama (ako uopće nešto treba raditi s njima).
Tema zaključana.
08.04.2011 | 15:24
Hvala puno na prijedlozima...evo da malo pojasnim situaciju.
Znaci radio sam istrazivanje tako da sam preko web analyzera testirao strukturu web stranice...i taj web analyzer da rezultate podijeljene po nekoliko malih tablica i to sam ja onda kopirao u word zato da mogu to imati na hrpi.
Sada imam par word dokumenata sa po 100 takvih rezultata i iz tih tablica trebam neke selektivne rezultate izvaditi i prekopirati u excel.

evo u prilogu je jedna od takvih word datoteka.

Datoteka za prilog:

Naziv datoteke: Banke_web_analyzer_4.doc
Veličina datoteke: 867328
Prilozi:
Tema zaključana.
08.04.2011 | 19:12
Sada imam par word dokumenata sa po 100 takvih rezultata i iz tih tablica trebam neke selektivne rezultate izvaditi i prekopirati u excel.

I dalje je nepoznanica koje to konkretne podatke moraš seliti iz Worda (gledam dokument) u Excel (nisi dao primjer "finalnog dokumenta" ). Ali, s obzirom na strukturu tablica, svest će se na parsanje pa glasam za AppleScript.

Sadržaju pojedinog cella neke tablice možeš pristupiti ovako:

tell application "Microsoft Word"
  return (content of text object of cell 1 of row 1 of table 2 of active document)
end tell

Gornji kod vraća sadržaj prve ćelije u prvom retku druge tablice aktivnog dokumenta.
Tema zaključana.
Moderatori: Bertone
  • Stranica:
  • 1

Prijava