Es ist wahrscheinlich besser und schneller, Feeds zu verwenden , aber da sich die D8-Version noch in der Entwicklung befindet; Alternativ können Sie Excel + VBA ( Visual Basic für Applikationen , wird mit Excel geliefert) + Internet Explorer 11 verwenden.
Hier ein Beispiel, wie Sie Ihren CSV-Inhalt mit VBA importieren können.
Angenommen, Sie möchten dies importieren und neue Knoten mit den Informationen aus Ihrer CSV erstellen:
Hier ist ein Beispiel für einen VBA-Code:
Sub Drupal_Import()
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
Dim x As Integer
For x = 2 To 4 'this controls which rows get added, so only 2 to 4
myURL = "https://rgr79.ply.st/node/add/article"
With IE
.Visible = True 'makes your Internet Explorer window visible.
.navigate myURL
End With
Do
el = vbNullString
On Error Resume Next
Set HTML = IE.document
el = HTML.getElementsByClassName("visually-hidden")(1).innerText
DoEvents
Loop While el = vbNullString
'the above loops until the visualy-hidden class is detected, which means the edit form has been loaded
Application.Wait (Now + TimeValue("00:00:03")) 'tells the program to wait 3 secs.
Set HTML = IE.document
HTML.getElementById("edit-title-0-value").Value = Cells(x, 1).Value 'here the 1 is the Y (so 1 is Column A)
HTML.getElementById("edit-body-0-value").Value = Cells(x, 2).Value 'here the 2 is the Y (so 2 is Column B)
Cells(x, 3).Value = "Done" 'here we use the 3rd column (Column C) and mark it as Done to keep track.
HTML.getElementsByClassName("button js-form-submit form-submit")(1).Click 'clicks the submit button
Application.Wait (Now + TimeValue("00:00:00")) 'here I have a wait for 0, increase it to 2 or 3 if you see your VBA get stuck after submitting a node.
Do
el = vbNullString
On Error Resume Next
Set HTML = IE.document
el = HTML.getElementsByClassName("messages messages--status")(0).innerText
DoEvents
Loop While el = vbNullString
'all the above does is loops the code until the drupal message is detected, which means the node was loaded, after the submit.
Next x
End Sub
Stellen Sie sicher, dass Sie den Domainnamen myURL = "https://rgr79.ply.st/node/add/article"
entsprechend Ihrer Domain ändern . Ich verwende eine simplytest.me- Domain, wenn Sie nicht bereits sagen können.
Wie füge ich den VBA-Code hinzu?
Klicken Sie auf die Registerkarte Entwickler und dann auf das Visual Basic-Symbol (oder ALT + F11).
und fügen Sie den Code in Sheet1 ein (Sheet1)
Klicken Sie nun in der Symbolleiste auf tool
und dannReferences
Sie müssen scrollen, suchen und markieren
- Microsoft HTML-Objektbibliothek
- Microsoft Internet Controls
Hinweis: Ich weiß, dass es mit Internet Explorer 11 funktioniert, nicht sicher, ob es mit dem neuen Microsoft Edge-Browser funktioniert.
Jetzt können Sie das Skript ausführen. Sie können dies tun, indem Sie auf die Schaltfläche Wiedergabe klicken
Sie können es auch ausführen, indem Sie auf das Makrosymbol klicken (siehe Abbildung 2). Ich bevorzuge es jedoch über das VBA-Fenster.
Sie drücken also die Wiedergabetaste und ein IE-Fenster wird automatisch geöffnet und Sie sehen Folgendes:
Oh ja, du hast vergessen dich einzuloggen, lol.
Sie melden sich also bei Drupal an und schließen dann den Explorer (da der Cookie-Verlauf Ihr Login speichert) und planen, erneut auf die Wiedergabetaste zu klicken. Aber Sie sind nicht in der Lage ... Sie sehen die Wiedergabetaste ausgegraut und können keine Änderungen am VBA-Code vornehmen ... Was ist los?
Nun, Ihr Code läuft noch, also müssen Sie die Stopp-Taste (Zurücksetzen) drücken.
Jetzt können Sie erneut auf die Wiedergabetaste klicken und die Welt der Automatisierung genießen.
Wichtig
Wenn Sie vorhaben, Inhalte in das Body-Feld einzufügen (wie in diesem Beispiel), können wir keine div-Klasse oder ID als Ziel festlegen, da Drupal 8 CKEditor für dieses Feld verwendet und CKEditor JS ist. Daher können wir keine Inhalte in CKEditor hinzufügen.
Zum Glück gibt es eine Lösung. Stellen Sie sicher, dass Ihre IE 11-Sicherheitseinstellungen auf Hoch eingestellt sind. Dadurch werden automatisch alle JS blockiert. Daher wird CKeditor nicht geladen und das Body-Feld ist genau wie die anderen Felder.
Wenn Sie Knoten bearbeiten müssen Beispiel:
Sub Drupal_Edit()
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
Dim x As Integer
For x = 2 To 4 'this controls which rows get added, so only 2 to 4
myURL = "https://rgr79.ply.st/node/" & Cells(x, 3) & "/edit"
With IE
.Visible = True 'makes your Internet Explorer window visible.
.navigate myURL
End With
Do
el = vbNullString
On Error Resume Next
Set HTML = IE.document
el = HTML.getElementsByClassName("visually-hidden")(1).innerText
DoEvents
Loop While el = vbNullString
'the above loops until the visualy-hidden class is detected, which means the edit form has been loaded
Application.Wait (Now + TimeValue("00:00:04")) 'tells the program to wait 3 secs.
Set HTML = IE.document
HTML.getElementById("edit-title-0-value").Value = Cells(x, 1).Value 'here the 1 is the Y (so 1 is Column A)
HTML.getElementById("edit-body-0-value").Value = Cells(x, 2).Value 'here the 2 is the Y (so 2 is Column B)
Cells(x, 4).Value = "Done" 'here we use the 4th column (Column D) and mark it as Done to keep track.
HTML.getElementsByClassName("button js-form-submit form-submit")(1).Click 'clicks the submit button
Application.Wait (Now + TimeValue("00:00:00")) 'here I have a wait for 0, increase it to 2 or 3 if you see your VBA get stuck after submitting a node.
Do
el = vbNullString
On Error Resume Next
Set HTML = IE.document
el = HTML.getElementsByClassName("messages messages--status")(0).innerText
DoEvents
Loop While el = vbNullString
'all the above does is loops the code until the drupal message is detected, which means the node was loaded, after the submit.
Next x
End Sub