Zum Inhalt springen

PowerQuery mit einen Link zum Bericht erstellen


Ina Krüger
Gehe zur Lösung Gelöst von Moritz,

Empfohlene Beiträge

Hallo zusammen,

ich weiß das ich in einer Query einen Link zu Bildern oder Unterschriften integrieren kann.
Das habe ich auch schon ein paar mal gemacht.

Für meinen neuen Fall ist das aber nicht ausreichend, bzw. zu Aufwendig, da sehr viele Bilder im Bericht sind.
Ist es möglich in einer Query auch einen Link zu integrieren der einen nicht registrierten Nutzer die Möglichkeit gibt den Bericht zur Eingabe aufzurufen?
So das ich im Bericht noch die Freigabe hinterlegen kann, das er auf die Fotos extern zugreifen kann.
Das wiederum, weiß ich auch wie es funktioniert.

Es hapert aktuell nur daran, das im Excel Sheet zur besserern Übersicht eine Möglichkeit fehlt den entsprechenden Bericht direkt zu öffnen.
Geht das?
Wenn ja wie?

Viele Grüße
Ina
 

Bearbeitet von Ina Roth
  • Like 2
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • Ina Krüger änderte den Titel in PowerQuery mit einen Link zum Bericht erstellen
  • Lösung

So, dann mal ran an die Buletten bzw. auf in's kalte Wasser! 😉

Cold Water Reaction GIF by The Wiggles

 

Zunächst einmal müssen wir hier zwei Vorgänge voneinander trennen:

  1. Externer Zugriff auf den Datensatz/den PDF-Bericht
  2. Externer Zugriff auf die Attachments

 

Wichtig Hinweis vorab: Die folgende Anleitung zeigt auf, wie externen Personen Zugriff auf eure smapOne-Daten – auch ohne Login – gewährt werden kann. Das bedeutet aber auch, dass eure Daten von Externen (sofern diese irgendwie an die erforderlichen IDs kommen*) entsprechend eingesehen werden können. Diese Einstellung ist also mit Bedacht zu wählen.

 

1. Externer Zugriff auf den Datensatz/den PDF-Bericht

Hierfür muss erst einmal der "Externe Datenzugriff" für die betroffene smap aktiviert werden:

image.thumb.png.7986f97b41eed25ae89b972ff7931604.png

 

Wenn wir uns jetzt die URL für den "Link zum externen Zugriff auf die Detailansicht des neuesten Datensatz"es ansehen, dann stellen wir folgende Struktur fest:

https://platform.smapone.com/portal/Creator/DataLink/DetailView/<ACCESS_KEY>?subscriptionId=<SUBSCRIPTION_ID>&versionId=<VERSION_ID>&recordId=<RECORD_ID>

Zu beachten sind dabei die Platzhalter ACCESS_KEY, SUBSCRIPTION_ID, VERSION_ID und RECORD_ID. Der Access Key wird so lange gleich bleiben, bis du in dem Dialog für den Externen Datenzugriff auf "Link neu ausstellen" klickst. Dieser Access Key ist damit eine Art Passwort light mit dem auf die Datensätze zugegriffen werden kann, sofern die anderen drei Parameter bekannt sind.

 

Diese URL zeigt aber erstmal nur die Web-Ansicht für den Datensatz. Das PDF direkt erhalten wir über folgende Link-Struktur:

https://platform.smapone.com/portal/Creator/DataLink/ExportRecord/<ACCESS_KEY>?subscriptionId=<SUBSCRIPTION_ID>&versionId=<VERSION_ID>&RecordId=<RECORD_ID>

(Dies ist einfach nur eine andere Route, hier ist .../ExportRecord/... statt .../DetailView/...)

 

Diesen Link müssen wir uns nun irgendwie in der Excel zusammenbauen (das kann auch im Rahmen der Power Query erfüllt werden, das ist aber nicht erforderlich). Dazu betrachten wir unsere Excel-Tabelle, deren Daten wir via Power Query bereits erfolgreich abgerufen haben (ich hatte dich so verstanden, dass das bereits für euch funktioniert, deshalb gehe ich nicht weiter darauf ein).

In dieser Tabelle benötigen wir beim Power Query-Abruf auf jeden Fall die SubsciptionID, die VersionID und die RecordID. Alle drei Merkmale werden aber bei jedem Datensatz mitgeliefert, die müssen wir lediglich auswählen für den Datenabruf:

image.png.11d6ffe43eb2831f354817d70fb5f50f.png

 

Im nächsten Schritt erstellen wir uns einfach eine weitere Spalte (hier "PDF-Link"), legen dort unsere URL für den externen Datenabruf ein und tauschen die jeweiligen IDs gegen die Platzhalter aus den anderen Spalten aus. Die Excel-Formel lautet bei mir also:

="https://platform.smapone.com/portal/Creator/DataLink/ExportRecord/<ACCESS_KEY>?subscriptionId="&[@[Column1.subscriptionId]]&"&versionId="&[@[Column1.smapVersionId]]&"&RecordId="&[@[Column1.id]]

(<ACCESS_KEY> ist in eurem Beispiel entsprechend durch euren Access Key zu ersetzen.)

 

Et voilà: Wir haben in der Excel einen anklickbaren Link zum PDF-Bericht, der ohne jegliche Login-Erfordernis abgerufen werden kann.

 

2. Externer Zugriff auf die Attachments

Auch hier ist unser Ausgangspunkt zunächst einmal das Freischalten des Externen Zugriffs auf Attachments, die ein User in einer smap hochläd.

image.png.898712e292038ad91a96204f025efc40.png

 

Diese Einstellung ermöglicht ganz grundsätzlich, dass auch Attachments nun ohne Login angesehen werden können. Die dahinterliegende Funktion ist eigentlich, dass User das Attachment aus dem PDF-Bericht anklicken und dann auch ohne Login einsehen können. Technisch gesehen bedeutet das konsequenterweise, dass diese Attachments dann auch über ihre spezielle URL öffentlich, ohne Login einsehbar sind.

Die Struktur für die URL beinhaltet auch wieder Parameter (SMAP_ID, RECORD_ID und FILE_ID), allerdings gibt es hier keinen Access Key:

https://platform.smapone.com/Portal/Creator/Data/File?smapId=<SMAP_ID>&recordId=<RECORD_ID>&fileId=<FILE_ID>

 

Und auch hier gehen wir analog zum obigen Verfahren vor: Wir beschaffen uns in der Power Query die drei obigen Werte. smapID und recordID kriegen wir direkt aus dem Datensatz herausgekitzelt, die fileID hängt am entsprechenden Baustein (bei mir eine Skizze) mit dran. Die Formel für die URL eines Attachments kann dann in Excel wie folgt aufgebaut werden:

="https://platform.smapone.com/Portal/Creator/Data/File?smapId="&[@[Column1.smapId]]&"&recordId="&[@[Column1.id]]&"&fileId="&[@[Column1.data.Sketch.fileId]]

 

Diese Formel kann noch ein wenig erweitert werden: Bei mir ist die Skizze kein Pflichtfeld. Somit kann das Feld "fileID" auch leer bleiben. In dem Fall möchte ich keine URL aufbauen, nur wenn die fileID entsprechend gefüllt ist:

=WENN([@[Column1.data.Sketch.fileId]]<>"";"https://platform.smapone.com/Portal/Creator/Data/File?smapId="&[@[Column1.smapId]]&"&recordId="&[@[Column1.id]]&"&fileId="&[@[Column1.data.Sketch.fileId]];"")

 

Nun ist eine öffentlich abrufbare URL für das Attachment aufgebaut, das grundsätzlich von jedem/jeder aufgerufen werden kann:

image.thumb.png.6c97e2dc9e8d4fd2df5b19a9d20de109.png

 

Wenn ich diese URL in einem Inkognito-Fenster öffne (ich also definitiv nicht eingeloggt bin), erhalte ich folgendes Bild...

image.png.c4e0a309d867572132c2d995315324ff.png

... und das war auch genau die von mir erstellte Skizze 🙂

 

Schau mal, ob du das hinkriegst. Wenn es klemmt, melde dich gerne einfach hier wieder.

  • Like 1
  • Danke 2
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Moritz,

Danke für den Input. Ich habe den Link jetzt direkt in die Query gebaut. Da funktioniert es soweit.
Jedoch muss ich im Excel den Link erst 2 oder 3 Mal anklicken, damit er es auch als Link erkennt und die PDF herunterläd und öffnet.
Hast du da eventuell noch eine Idee, wie ich das hin bekomme, das hier der Link gleich als Link erkannt wird?

VG
Ina

Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 6.3.2023 um 10:28 schrieb Ina Roth:

Hast du da eventuell noch eine Idee, wie ich das hin bekomme, das hier der Link gleich als Link erkannt wird?

Leider nein 😞 Ich konnte das Problem bei mir nicht beobachten; verwendest du Excel als Desktop-Applikation oder über den Browser?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du kannst mal probieren deinen link in Klammern zu setzen und Hyperlink davor zu schreiben.

HYPERLINK("https://platform.smapone.com/Portal/Creator/Data/File?smapId="&[@[Column1.smapId]]&"&recordId="&[@[Column1.id]]&"&fileId="&[@[Column1.data.Sketch.fileId]])

Vielleicht verarbeitet es diese links dann besser.

  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 10.3.2023 um 11:16 schrieb Ina Roth:

Das habe ich schon versucht, da bringt er mir leider immer einen Fehler. mit #Wert

Das kann ich nachstellen, wenn ich versuche, den Link per HYPERLINK zu wandeln, kriege ich auch #Wert. Leider kann ich hierzu keine Tipps geben, da es die Grenzen meines Excel-Wissens überschreitet 😞

  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

Die Fehlermeldung liegt daran, dass Excel in der Hyperlink-Funktion lediglich 255 Zeichen verarbeiten kann, der zusammengebaute Link auf die oben genannte Art allerdings ca. 300 Zeichen hat. 

Ich kann hier leider nur den Grund für die Fehlermeldung mitteilen, habe hier selbst auch noch keine Lösung dafür gefunden. 😞

  • Like 3
  • Danke 2
Link zu diesem Kommentar
Auf anderen Seiten teilen

Das ist ja ärgerlich! Und auch nicht besonders weitsichtig von Excel/Microsoft, wie ich finde. Der Standard für Hyperlinks (RFC7239) besagt:

Zitat

Various ad hoc limitations on request-line length are found in practice. It is RECOMMENDED that all HTTP senders and recipients support, at a minimum, request-line lengths of 8000 octets.

Die alltagsrealitische Grenze, die auch Browser handeln können, liegt wohl so um die 2000 Zeichen... 😕

  • Like 1
  • Zustimmung 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 11 Monate später...

Guten Tag,

 

fast ein Jahr später melde ich mich in diesem Beitrag. Ich wollte auch eine Automatische-Übersichtstabelle generieren lassen via Power Query, was auch klappt. Dann wollte ich dahinter noch einen Link packen, mit dem man den ganzen PDF-Bericht aufrufen kann.

Die Link-Erzeugung (wie oben ganz toll beschrieben) funktioniert auch soweit, allerdings ist es nun so, dass wenn die Links in Excel ausgespuckt werden, dass diese absolut nicht anklickbar sind (auch nicht mit STRG, etc.). Jedoch wenn ich den Link in den Browser einfüge, funktioniert es wiederum einwandfrei.

Ich habe bereits probiert die Links mit einem Macro anklickbar zumachen, jedoch ist die Lösung (zumindest langfristig) nicht zufriedenstellend gewesen. Ich habe auch probiert, die Zellenformatierung, von Zahl, auf Text, etc. zu ändern (aber evt. habe ich da etwas übersehen).

Meine Vermutung wäre, dass es mit dem ="..." zusammenhängt, welcher ja der eigenetliche Zelleninhalt in Excel ist.

 

Im Optimalfall, würde ich auch gerne einfach beispielsweise die Nachricht "Link", blau und unterstrichen machen, sodass diese direkt zum Bericht führt, und dahinter steht der lange Link, sodass die Tabelle schön minimalistisch aufgebaut ist.

 

Wichtig wäre mir, dass sowohl die Link-Generierung automatisch ist, dass man diesen auch anklicken kann in Excel 

und im nächsten Schritt, so minimalistisch wie möglich gestaltet (s. Oben).

Vielleicht hat jemand da ja eine Lösung drauf, wäre super! ... @Moritz?

 

Herzlichste Grüße,

Sajen

  • Like 3
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

ja das klappt leider auch nicht. Bekomme da immer den Fehler #Wert!.

Ich habe herum probiert und die Links werden anklickbar, wenn ich F2+Enter drücke, aber ohne das eben nicht. Durch das ständige aktualisieren der Query und dadurch dass Sendkey Makros nicht so toll sind, ist ein Makro leider keine Lösung.

Aber eventuell hast du @Moritzeine schlaue Lösung, wie man dieses F2+Enter, für diese Zeile dauerhaft/regelmäßig durchführen lassen könnte.

Herzlichste Grüße

  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo zusammen,

das Problem hatte ich damals auch schon und egal was ich versucht habe, der Link lies sich erst dann als Link anklicken wenn ich 2 mal in die Zeile geklickt habe.
Durch die Aktualisierung der PowerQuery ist das aber keine Lösung.
Wenn ihr hierzu eine Lösung findet bin ich ganz gespannt wie diese aussieht.
 

Viele Grüße
Ina

Link zu diesem Kommentar
Auf anderen Seiten teilen

In Excel ist es tatsächlich so, dass Text, der wie ein Link aussieht, nicht automatisch in einen klickbaren Hyperlink umgewandelt wird, wenn er über Power Query importiert oder durch eine Formel generiert wird. Die Standardfunktionalität erfordert, wie erwähnt wurde, dass Benutzer die Zelle bearbeiten und Enter drücken, um den Text in einen Hyperlink zu konvertieren. Dies ist nicht ideal für dynamische Berichte oder Dashboards, die aus Power Query aktualisiert werden.

Laut GPT ist das ganze nur mit einem VBA-Script. Ich habe es selbst nicht ausprobiert, aber vielleicht hat ja irgendwer die Muse dazu? 😄
 

Sub ConvertToHyperlinks()
    Dim rng As Range
    Dim cell As Range

    ' Definieren Sie den Bereich, den Ihr Skript abdecken soll (z.B. "A1:A100")
    Set rng = Sheet1.Range("A1:A100")

    For Each cell In rng
        If cell.Value <> "" Then
            ' Erstellt einen Hyperlink in der Zelle
            Sheet1.Hyperlinks.Add Anchor:=cell, Address:=cell.Value, TextToDisplay:=cell.Value
        End If
    Next cell
End Sub

 

Bearbeitet von HK alias Holger
  • Like 2
  • Danke 2
Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke @HK alias Holger,

die Idee mit dem Makro hatte ich auch schon ausprobiert, leider bringt die mir nichts, da, der Makro immer per Hand ausgeführt werden muss,

dadurch dass die Query sich ständig aktualisiert. Die VBA Variante ist eine Lösung, aber leider nur sehr temporär.

Wenn nicht muss man leider immer F2+Enter drücken, wird wohl man dann wohl überstehen müssen.

Aber vielen Dank für die zahlreichen Lösungsideen.

  • Like 2
Link zu diesem Kommentar
Auf anderen Seiten teilen

Bitte melde Dich an, um einen Kommentar zu hinterlassen

Du kannst nach der Anmeldung einen Kommentar hinterlassen



Jetzt anmelden
×
×
  • Neu erstellen...