Provavelmente é melhor e mais rápido usar o Feeds , mas como a versão D8 ainda está em desenvolvimento; Como alternativa, você pode usar o Excel + VBA ( Visual Basic for Applications , vem com Excel) + Internet Explorer 11.
Aqui está um exemplo de como você pode importar seu conteúdo CSV usando o VBA.
Por exemplo, vamos supor que você queira importar isso e criar novos nós com as informações do seu CSV:
Aqui está um código VBA de exemplo:
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
Certifique-se de alterar o nome do domínio na myURL = "https://rgr79.ply.st/node/add/article"
linha do seu domínio. Estou usando um domínio simplytest.me , se você já não pode saber.
Como adicionar o código VBA?
Clique na guia Desenvolvedor e, em seguida, no ícone Visual Basic (ou ALT + F11)
e cole o código dentro da Plan1 (Plan1)
Agora, na barra de ferramentas, clique em tool
e depoisReferences
Você precisará rolar, encontrar e marcar
- Biblioteca de objetos HTML da Microsoft
- Controles da Internet da Microsoft
Nota: Eu sei que funciona com o Internet Explorer 11, não tenho certeza se funciona com o novo navegador Microsoft Edge.
Agora você está pronto para executar o script. Você pode fazer isso clicando no botão Reproduzir
Você também pode executá-lo clicando no ícone Macros (veja a imagem2), mas prefiro fazê-lo na janela do VBA.
Então você pressiona o botão play e uma janela do IE é aberta automaticamente e você vê o seguinte:
Ah, sim, você esqueceu de fazer login, lol.
Então, você prossegue o login no Drupal e fecha o explorer (já que o histórico de cookies salva o seu login) e planeja pressionar o botão play novamente. Mas você não é capaz de ... você vê o botão play acinzentado e não é capaz de fazer alterações no código VBA ... O que está acontecendo?
Bem, seu código ainda está sendo executado, então você precisa pressionar o botão Parar (redefinir).
Agora você pode clicar no botão play novamente e alegrar o mundo da automação.
Importante
Se você planeja inserir itens no campo Corpo (como estamos fazendo neste exemplo), como o Drupal 8 usa CKEditor para esse campo e CKEditor é JS, não podemos segmentar uma classe ou ID div; portanto, não podemos adicionar conteúdo dentro do CKEditor.
Felizmente, há uma solução alternativa. Verifique se as configurações de segurança do IE 11 estão definidas como Alta, isso automaticamente bloqueará todas as JS. Portanto, o CKeditor não será carregado e o campo do corpo será como os outros campos.
Se você precisar editar um exemplo de nós:
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