2017-11-15 4 views
0

Auf einem Formular habe ich ein DrivePicker Widget/Schaltfläche. Diese Schaltfläche öffnet mein Google Drive und ich kann ein Bild auswählen. Um dieses Bild in einem Bild-Widget anzuzeigen, brauche ich den Web-Content-Link anstelle des Datei-URL-Links. Die Datei-URL-Verknüpfung funktioniert nicht.Wenn Sie DrivePicker verwenden, erhalten Sie den WebContent-Link

Durch den Eigenschaftseditor des DrivePicker-Widgets habe ich den folgenden Code bei onDocumentSelect Teil.

varId = Ergebnis.docs [0] .id; widget.datasource.item.strArtikelAfbeeldingId = Ergebnis.docs [0] .id; widget.datasource.item.strArtikelAfbeeldingUrl = Laufwerk.Files.get (varId) .webContentLink;

Leider bekomme ich keine webcontentlink und bekam die Folowing Fehlermeldung

Laufwerk nicht bei pageTabelArtikelen.Form1.Form1Body.DrivePicker1.onDocumentSelect definiert: 3: 50

Wie kann ich eine webcontentlink eines bekommen ausgewähltes Bild bei Verwendung des DrivePicker-Widgets

Antwort

0

Sie müssen eine Serverfunktion vom Client ausführen, um Drive zu verwenden. So können Sie immer noch diese Funktion für das onDocumentSelect Ereignis laufen, aber Sie würden eine Serverfunktion wie getFileWebContent() deklarieren möchten und dann Ereigniscode ändern:

Kunde

var Id = widget.selectedDocId; 
    google.script.run 
     .withSuccessHandler(function() { 
     //do something here with the returned link from server; 
     }) 
     .withFailureHandler(function() { 
     //optional failure handler; 
     }) 
     .getFileWebContent(Id); 

Server

function getFileWebContent(Id) { 
    var link = Drive.Files.get(Id).WebContentLink; 
    return link; 
} 

Es wäre ideal, den Servercode im OnCreate-Ereignis des Modells auszuführen, das eine Serverfunktion ist. In diesem Fall können Sie Ihr Modell ein Feld für die Datei-ID hat und in Ihrem onCreate Ereignisse würden Sie

var link = Drive.Files.get(record.FileId).webContentLink; 
record.WebLink = link; 
+0

ich Ihren letzten Vorschlag auf einem onSave Ereignisse in einem Test-App laufen und das funktioniert gut. Leider bekomme ich in meiner ursprünglichen App immer noch den ReferenceError: "Drive" ist nicht definiert. at models.tblArtikelen.onSaveEvent: 1 - Ändern von Datensätzen: (Fehler): "Laufwerk" ist nicht definiert. at models.tblArtikelen.onSaveEvent: 1 Wenn Sie den Code auf ein Ereignis setzen oder ein Skript auf dem Server hinzufügen, wird "Laufwerk ist nicht definiert" angezeigt. –

+0

Finden Sie heraus, warum ich das "Laufwerk ist nicht definiert Fehler" habe Ich habe in den App-Einstellungen vergessen, die Drive API unter Advanced Services hinzuzufügen –

Verwandte Themen