Probabilmente è meglio e più veloce usare Feed , ma poiché la versione D8 è ancora in fase di sviluppo; in alternativa, è possibile utilizzare Excel + VBA ( Visual Basic , Applications Edition , viene fornito con Excel) + Internet Explorer 11.
Ecco un esempio di come importare i tuoi contenuti CSV usando VBA.
Ad esempio, supponiamo che tu voglia importare questo e creare nuovi nodi con le informazioni dal tuo CSV:
Ecco un esempio di codice VBA:
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
Assicurati di cambiare il nome di dominio in myURL = "https://rgr79.ply.st/node/add/article"
linea con il tuo dominio. Sto usando un dominio simplytest.me , se non puoi già dirlo.
Come aggiungere il codice VBA?
Fare clic sulla scheda Sviluppatore e quindi sull'icona Visual Basic (o ALT + F11)
e incolla il codice all'interno di Sheet1 (Sheet1)
Ora nella barra degli strumenti, fai clic su tool
e quindiReferences
Dovrai scorrere, trovare e selezionare
- Libreria di oggetti HTML Microsoft
- Controlli Internet di Microsoft
Nota: so che funziona con Internet Explorer 11, non sono sicuro che funzioni con il nuovo browser Microsoft Edge.
Ora sei pronto per eseguire lo script. Puoi farlo facendo clic sul pulsante Riproduci
Puoi anche eseguirlo facendo clic sull'icona Macro (vedi immagine2), ma preferisco farlo dalla finestra VBA.
Quindi premi il pulsante di riproduzione e una finestra di IE si apre automaticamente e vedi questo:
Oh sì, hai dimenticato di accedere, lol.
Quindi procedi al login su Drupal e poi chiudi explorer (poiché la cronologia dei cookie salva il tuo login) e pensi di premere nuovamente il pulsante di riproduzione. Ma non sei in grado di ... vedi il pulsante di riproduzione disattivato e non puoi apportare modifiche al codice VBA ... Cosa sta succedendo?
Bene, il tuo codice è ancora in esecuzione, quindi devi premere il pulsante Stop (reset).
Ora puoi fare nuovamente clic sul pulsante di riproduzione e rallegrare il mondo dell'automazione.
Importante
Se hai intenzione di inserire elementi nel campo Body (come stiamo facendo in questo esempio), poiché Drupal 8 utilizza CKEditor per questo campo e CKEditor è JS, non possiamo scegliere come target una classe div o un ID; pertanto, non possiamo aggiungere contenuti all'interno di CKEditor.
Fortunatamente, c'è un lavoro in giro. Assicurati che le impostazioni di sicurezza di IE 11 siano impostate su Alta, questo bloccherà automaticamente tutto JS. Pertanto, CKeditor non verrà caricato e il campo del corpo sarà proprio come gli altri campi.
Se è necessario modificare un esempio di nodi:
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