Probablemente sea mejor y más rápido usar Feeds , pero dado que la versión D8 todavía está en desarrollo; alternativamente, puede usar Excel + VBA ( Visual Basic para aplicaciones , viene con Excel) + Internet Explorer 11.
Aquí un ejemplo de cómo puede importar su contenido CSV usando VBA.
Por ejemplo, supongamos que desea importar esto y crear nuevos nodos con la información de su CSV:
Aquí hay un código VBA de muestra:
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
Asegúrese de cambiar el nombre de dominio en myURL = "https://rgr79.ply.st/node/add/article"
línea a su dominio. Estoy usando un dominio simplytest.me , si aún no lo sabes.
¿Cómo agregar el código VBA?
Haga clic en la pestaña Desarrollador y luego en el icono de Visual Basic (o ALT + F11)
y pegue el código dentro de Sheet1 (Sheet1)
Ahora en la barra de herramientas, haga clic en tool
y luegoReferences
Deberá desplazarse, buscar y marcar
- Biblioteca de objetos HTML de Microsoft
- Controles de internet de Microsoft
Nota: Sé que funciona con Internet Explorer 11, no estoy seguro si funciona con el nuevo navegador Microsoft Edge.
Ahora estás listo para ejecutar el script. Puede hacerlo haciendo clic en el botón Reproducir
También puede ejecutarlo haciendo clic en el icono de macros (ver imagen2), pero prefiero hacerlo desde la ventana de VBA.
Entonces presionas el botón de reproducción y una ventana de IE se abre automáticamente y ves esto:
Oh sí, olvidaste iniciar sesión, jajaja.
Entonces procedes a iniciar sesión en Drupal y luego cierras el explorador (ya que el historial de cookies guarda tu inicio de sesión) y planeas presionar el botón de reproducción nuevamente. Pero no puede ... ve el botón de reproducción atenuado y no puede realizar ningún cambio en el código VBA ... ¿Qué está pasando?
Bueno, su código aún se está ejecutando, por lo que debe presionar el botón Detener (restablecer).
Ahora puede hacer clic en el botón de reproducción nuevamente y disfrutar del mundo de la automatización.
Importante
Si planea insertar cosas en el campo Cuerpo (como lo estamos haciendo en este ejemplo), dado que Drupal 8 usa CKEditor para este campo y CKEditor es JS, no podemos apuntar a una clase div o ID; por lo tanto, no podemos agregar contenido dentro de CKEditor.
Afortunadamente, hay una solución alternativa. Asegúrese de que la configuración de seguridad de IE 11 esté establecida en Alta, esto bloqueará automáticamente todos los JS. Por lo tanto, CKeditor no se cargará, y el campo del cuerpo será igual que los otros campos.
Si necesita editar nodos, por ejemplo:
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