Mungkin lebih baik dan lebih cepat untuk menggunakan Feed , tetapi karena versi D8 masih dalam pengembangan; sebagai alternatif, Anda bisa menggunakan Excel + VBA ( Visual Basic for Applications , hadir dengan Excel) + Internet Explorer 11.
Berikut ini contoh bagaimana Anda dapat mengimpor konten CSV Anda menggunakan VBA.
Misalnya, mari kita asumsikan Anda ingin mengimpor ini dan membuat node baru dengan info dari CSV Anda:
Berikut ini contoh kode 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
Pastikan Anda mengubah nama domain myURL = "https://rgr79.ply.st/node/add/article"
sesuai dengan domain Anda. Saya menggunakan domain simplytest.me , jika Anda belum tahu.
Bagaimana cara menambahkan kode VBA?
Klik pada tab Pengembang dan kemudian pada ikon Visual Basic (atau ALT + F11)
dan rekatkan kode di dalam Sheet1 (Sheet1)
Sekarang di bilah alat, klik tool
dan kemudianReferences
Anda perlu menggulir, menemukan, dan menandai
- Perpustakaan Objek Microsoft HTML
- Kontrol Internet Microsoft
Catatan: Saya tahu ini bekerja dengan Internet Explorer 11, tidak yakin apakah itu bekerja dengan browser Microsoft Edge yang baru.
Sekarang Anda siap menjalankan skrip. Anda dapat melakukannya dengan mengeklik tombol Mainkan
Anda juga dapat menjalankannya dengan mengklik Ikon Makro (lihat image2), tetapi saya lebih suka melakukannya dari jendela VBA.
Jadi Anda menekan tombol play dan jendela IE secara otomatis terbuka dan Anda melihat ini:
Oh ya, Anda lupa masuk, lol.
Jadi Anda melanjutkan untuk masuk ke Drupal dan kemudian Anda menutup explorer (karena riwayat cookie menyimpan login Anda) dan berencana untuk menekan tombol play lagi. Tetapi Anda tidak dapat ... Anda melihat tombol putar abu-abu dan tidak dapat membuat perubahan pada kode VBA ... Apa yang terjadi?
Nah kode Anda masih berjalan, jadi Anda harus menekan tombol Stop (reset).
Sekarang Anda dapat mengklik tombol putar lagi dan bersuka ria dunia otomatisasi.
Penting
Jika Anda berencana untuk memasukkan hal-hal ke bidang Tubuh (seperti yang kami lakukan dalam contoh ini), karena Drupal 8 menggunakan CKEditor untuk bidang ini dan CKEditor adalah JS, kami tidak dapat menargetkan kelas div atau ID; dengan demikian, kami tidak dapat menambahkan konten di dalam CKEditor.
Untungnya, ada pekerjaan di sekitar. Pastikan pengaturan Keamanan IE 11 Anda diatur ke Tinggi, ini secara otomatis akan memblokir semua JS. Oleh karena itu, CKeditor tidak akan memuat, dan bidang tubuh akan sama seperti bidang lainnya.
Jika Anda perlu mengedit node misalnya:
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