Textdatei aus Google Drive (in Variable) einlesen?

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

User avatar
Gucky_87
Posts: 375
Joined: 03 Jul 2014, 05:09

Textdatei aus Google Drive (in Variable) einlesen?

23 May 2017, 05:37

Hallöle zusammen,

ich möchte zu Updatezwecken eine (natürlich freigegebene) Textdatei aus Google Drive in einem Script auswerten, aber ich bin iwue zu doof, die als Textdatei zu speichern.

Mit URLDownloadToFile https://drive.google.com/file/d/0BzL_WY ... sp=sharing, d:\Text.txt kommt da nur der gesamte HTML Code der Driveseite mit, den ihc aber nicht bauche.

Kennt jemand einen Weg, wie ich dies lösen kann?

Am elegantesten wäre es natürlich, die txt Datei direkt in eine Variable einlesen zu können, ohne sie erst auf der Platte abzulegen. Es reicht mir aber auch, wenn ich sie speichere, ins Script einlese und direkt wieder lösche.

Ich brauche kein fertiges Script (außer, sowas gibt es schon). Vielleicht kann man ja den Link "frisieren", dass die Dateil runter geladen wird?!

Für Vorschläge und Ideen und für Eure Zeit Danke!

Gucky
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: Textdatei aus Google Drive (in Variable) einlesen?

23 May 2017, 05:44

Ich glaube nicht, dass Google Drive direkt eine Lösung hierfür anbietet - es ist mir zumindest kein weg bekannt bei dem man direkt von Google runterladen kann.
Die einzige Lösung wäre es Google Drive in den Wind zu schreiben und einen anderen Dienst zu verwenden.
Ich persönlich verwende zum Beispiel github für solche Zwecke.
Recommends AHK Studio
User avatar
hoppfrosch
Posts: 443
Joined: 07 Oct 2013, 04:05
Location: Rhine-Maine-Area, Hesse, Germany
Contact:

Re: Textdatei aus Google Drive (in Variable) einlesen?

23 May 2017, 07:07

Du könntest es auch über die Google Drive REST-API versuchen (speziell https://developers.google.com/drive/v3/ ... -downloads)

Sollte funktionieren ... - allerdings hab ich es noch nie getestet.

-----

EDIT: Was evtl. auch eine Möglichkeit wäre: gDrive (vorgestellt von BoBo - da fundet man auch ein Beispiel wie man das aus AHK nutzen kann)
User avatar
Gucky_87
Posts: 375
Joined: 03 Jul 2014, 05:09

Re: Textdatei aus Google Drive (in Variable) einlesen?

23 May 2017, 12:38

Das schau ich mir nachher mal genauer an.

Lieben Dank!

Gucky
garry
Posts: 3740
Joined: 22 Dec 2013, 12:50

Re: Textdatei aus Google Drive (in Variable) einlesen?

23 May 2017, 14:42

2 Beispiele : show in memory oder textfile

Code: Select all

where=%a_scriptdir%\xx.txt
f1=https://drive.google.com/uc?export=download&id=0BzL_WYv4aWCZV09GV09QbkxWaTQ
UrlDownloadToFile,%f1%,%where%
httpQuery(aa,f1)
msgbox,%aa%
run,%where%
return

httpQuery(byref Result, lpszUrl, POSTDATA="", HEADERS="")
{
   WebRequest := ComObjCreate("WinHttp.WinHttpRequest.5.1")
   WebRequest.Open("GET", lpszUrl)
   WebRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
   WebRequest.Send(POSTDATA)
   Result := WebRequest.ResponseText
   WebRequest := ""
}
return
User avatar
Gucky_87
Posts: 375
Joined: 03 Jul 2014, 05:09

Re: Textdatei aus Google Drive (in Variable) einlesen?

08 Jun 2017, 19:44

Sorry, das klappt (be mir) leider nicht. Ich bekomme zwar eine Datei, es ist jedoch HTML Spaghetticode, der nicht einmal nsatzweise den Text meiner TXT Datei enthält.
Ich werde daher wohl einen externen Webspace für Updateanfragen benutzen.
Wäre schön gewesen, den Google Account (also dessen Drive) dafür nutzen zu können, aber wenn Frl. Google nicht will, dann eben nicht, nicht? XD

Grüße.
garry
Posts: 3740
Joined: 22 Dec 2013, 12:50

Re: Textdatei aus Google Drive (in Variable) einlesen?

09 Jun 2017, 08:56

weiss nicht warum es bei mir funktioniert , ich siehe lediglich diesen Text :

Code: Select all

1.00.01
23.05.2017
User avatar
Gucky_87
Posts: 375
Joined: 03 Jul 2014, 05:09

Re: Textdatei aus Google Drive (in Variable) einlesen?

09 Jun 2017, 09:26

Ach?
Ich sehe Spaghetticode. Merkwürzig XD

Ich versuch´s aber nochmal.
Du hast Recht, es klappt.

Nun kommt mir die Frage, weshalb es (bei mir) erst jetzt klappt?
Ich hatte das mit 2 PCs, die beide die aktuelle AHK Version und Win10 besitzen,
ausprobiert und beide machten eine MsgBox auf, die meinen Screen sprengte XD

Das URLDownloadToFile lässt sich nicht so ändern, dass die Textdatei direkt in eine Variable geladen wird?


Nochmal danke,
Gucky.
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: Textdatei aus Google Drive (in Variable) einlesen?

09 Jun 2017, 10:33

Gucky_87 wrote:Ach?
Ich sehe Spaghetticode. Merkwürzig XD

Ich versuch´s aber nochmal.
Du hast Recht, es klappt.

Nun kommt mir die Frage, weshalb es (bei mir) erst jetzt klappt?
Ich hatte das mit 2 PCs, die beide die aktuelle AHK Version und Win10 besitzen,
ausprobiert und beide machten eine MsgBox auf, die meinen Screen sprengte XD

Das URLDownloadToFile lässt sich nicht so ändern, dass die Textdatei direkt in eine Variable geladen wird?


Nochmal danke,
Gucky.
Also bei mir klappt das problemlos. Und was in der MsgBox angezeigt wird, ist unzweifelhaft der inhalt der variablen aa, welche als inhalt die information aus der datei test.txt enthält, die wiederum auf google drive abliegt. Mission accomplished. :thumbup:. Thx garry :clap:
Last edited by BoBo on 10 Jun 2017, 16:00, edited 1 time in total.
garry
Posts: 3740
Joined: 22 Dec 2013, 12:50

Re: Textdatei aus Google Drive (in Variable) einlesen?

09 Jun 2017, 15:13

Gucky_87 wrote :
Das URLDownloadToFile lässt sich nicht so ändern, dass die Textdatei direkt in eine Variable geladen wird?
oben hatte ich 2 Beispiele ( memory ( Variable aa ) und text )
kannst die 3 Befehle weglassen ( urldownload to textfile ) und siehst lediglich variable aa

Code: Select all

;where=%a_scriptdir%\xx.txt
f1=https://drive.google.com/uc?export=download&id=0BzL_WYv4aWCZV09GV09QbkxWaTQ
;UrlDownloadToFile,%f1%,%where%
httpQuery(aa,f1)
msgbox,%aa%
;run,%where%
return

httpQuery(byref Result, lpszUrl, POSTDATA="", HEADERS="")
{
   WebRequest := ComObjCreate("WinHttp.WinHttpRequest.5.1")
   WebRequest.Open("GET", lpszUrl)
   WebRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
   WebRequest.Send(POSTDATA)
   Result := WebRequest.ResponseText
   WebRequest := ""
}
return
User avatar
jNizM
Posts: 3183
Joined: 30 Sep 2013, 01:33
Contact:

Re: Textdatei aus Google Drive (in Variable) einlesen?

14 Jun 2017, 03:07

Code: Select all

GDrive_URL := "https://drive.google.com/uc?export=download&id=0BzL_WYv4aWCZV09GV09QbkxWaTQ"

MsgBox % DownloadToString(GDrive_URL)


DownloadToString(url, encoding := "utf-8")
{
    static a := "AutoHotkey/" A_AhkVersion
    if (!DllCall("LoadLibrary", "str", "wininet") || !(h := DllCall("wininet\InternetOpen", "str", a, "uint", 1, "ptr", 0, "ptr", 0, "uint", 0, "ptr")))
        return 0
    c := s := 0, o := ""
    if (f := DllCall("wininet\InternetOpenUrl", "ptr", h, "str", url, "ptr", 0, "uint", 0, "uint", 0x80003000, "ptr", 0, "ptr"))
    {
        while (DllCall("wininet\InternetQueryDataAvailable", "ptr", f, "uint*", s, "uint", 0, "ptr", 0) && s > 0)
        {
            VarSetCapacity(b, s, 0)
            DllCall("wininet\InternetReadFile", "ptr", f, "ptr", &b, "uint", s, "uint*", r)
            o .= StrGet(&b, r >> (encoding = "utf-16" || encoding = "cp1200"), encoding)
        }
        DllCall("wininet\InternetCloseHandle", "ptr", f)
    }
    DllCall("wininet\InternetCloseHandle", "ptr", h)
    return o
}
[AHK] v2.0.5 | [WIN] 11 Pro (Version 22H2) | [GitHub] Profile
User avatar
Gucky_87
Posts: 375
Joined: 03 Jul 2014, 05:09

Re: Textdatei aus Google Drive (in Variable) einlesen?

14 Jun 2017, 04:16

Vielen Dank für Eure Hilfe, das klappt sehr gut.

Gucky.
garry
Posts: 3740
Joined: 22 Dec 2013, 12:50

Re: Textdatei aus Google Drive (in Variable) einlesen?

18 Jun 2017, 06:19

@jNizM , vielen Dank , wünsche euch noch einen schönen Sonntag

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 31 guests