Singkronasi Excel Offline dengan Spreadsheet (Google Sheet) Unlimited (MS.2010) Tanpa Berlangganan
1. Buatlah Spreadsheet pada Google Sheet
2. Buatlah lembar kerja Apps Script untuk mengkoneksikan ke Excel Offline.
3. Pada lembar kerja Apps Script terdapat file default yaitu Code.gs.
4. Copy script di bawah ini ke Code.gs.
Masukkan Password Untuk Melihat Script (Password ada di dalam video)
// Script by Javabitpro
// www.javabutpro.com
function doGet(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
Utilities.sleep(2000);
// Silahkan Sesuaikan Range Kolom Dengan Kebutuhan
var data = sheet.getRange("A:H").getValues();
var jsonData = JSON.stringify(data);
return ContentService.createTextOutput(jsonData).setMimeType(ContentService.MimeType.JSON);
}
// Script by Javabitpro
// www.javabutpro.com
function doPost(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = JSON.parse(e.postData.contents);
var dataArray = data.data;
// Script by Javabitpro
// www.javabutpro.com
// Mengupdate data pada Google Sheets
for (var i = 0; i < dataArray.length; i++) {
var row = dataArray[i].row;
var col = dataArray[i].col;
var value = dataArray[i].value;
sheet.getRange(row, col).setValue(value);
}
// Mengembalikan respons untuk menunjukkan bahwa data telah terkirim
return ContentService.createTextOutput("Data telah terkirim").setMimeType(ContentService.MimeType.TEXT);
}
// Script by Javabitpro
// www.javabutpro.com
function doGet(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
Utilities.sleep(2000);
// Silahkan Sesuaikan Range Kolom Dengan Kebutuhan
var data = sheet.getRange("A:H").getValues();
var jsonData = JSON.stringify(data);
return ContentService.createTextOutput(jsonData).setMimeType(ContentService.MimeType.JSON);
}
// Script by Javabitpro
// www.javabutpro.com
function doPost(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = JSON.parse(e.postData.contents);
var dataArray = data.data;
// Script by Javabitpro
// www.javabutpro.com
// Mengupdate data pada Google Sheets
for (var i = 0; i < dataArray.length; i++) {
var row = dataArray[i].row;
var col = dataArray[i].col;
var value = dataArray[i].value;
sheet.getRange(row, col).setValue(value);
}
// Mengembalikan respons untuk menunjukkan bahwa data telah terkirim
return ContentService.createTextOutput("Data telah terkirim").setMimeType(ContentService.MimeType.TEXT);
}
5. Klik ikon Save.
6. Klik tombol Terapkan/Deploy dan pilih Deployment baru/New Deployment.
7. Pastikan jenisnya adalah Aplikasi web, hak aksesnya adalah Siapa saja/Anyone lalu klik Terapkan/Deploy.
8. Setelah di Delploy akan menghasilkan URL yang siap disalin untuk di koneksikan dengan Excel.
9. Sekarang buka Ms. Excel 2010.
10. Klik menu Developer lalu pilih Visual Basic atau bisa dengan tekan tombol Alt+F11 pada keyobard, maka akan muncul lembar kerja Microsoft Visual Basic for Application (VBA).
11. Pada VBA klik Insert pada toolbar lalu pilih Module. Lakukan sebanyak 2x, sehingga terdapat 2 modul yang siap di isi script yaitu Module 1 dan Module 2.
12. Buka Module 1, lalu copy script di bawah ini ke Module 1.
Masukkan Password Untuk Melihat Script (Password sama dengan di atas)
' VBA (di Excel)
Sub KirimSemuaDataKeGoogleSheets()
Dim URL As String
Dim HTTPReq As Object
Dim postData As String
Dim responseText As String
Dim dataRange As Range
Dim cell As Range
' Sesuaikan URL dengan URL dari Google Apps Script Anda
URL = "URL_GOOGLE_SCRIPT_APPS_YANG_SUDAH_DI_DEPLOY_TADI"
' Sesuaikan range yang ingin Anda kirim
Set dataRange = Worksheets("Sheet1").Range("A1:H100")
' Membuat string data untuk dikirim
postData = "{""data"": ["
' Iterasi melalui setiap sel dalam range dan menambahkannya ke string postData
For Each cell In dataRange
postData = postData & "{""row"": " & cell.row & ", ""col"": " & cell.column & ", ""value"": """ & cell.value & """},"
Next cell
' Menghapus koma ekstra di akhir string postData
postData = Left(postData, Len(postData) - 1)
' Menutup string postData
postData = postData & "]}"
' Membuat objek XMLHTTP
Set HTTPReq = CreateObject("MSXML2.ServerXMLHTTP")
' Mengirim data ke Google Sheets
With HTTPReq
.Open "POST", URL, False
.setRequestHeader "Content-Type", "application/json"
.send postData
responseText = .responseText
End With
' Menampilkan popup
MsgBox "Data telah dikirim", vbInformation, "Javabitpro.com"
End Sub
' VBA (di Excel)
Sub KirimSemuaDataKeGoogleSheets()
Dim URL As String
Dim HTTPReq As Object
Dim postData As String
Dim responseText As String
Dim dataRange As Range
Dim cell As Range
' Sesuaikan URL dengan URL dari Google Apps Script Anda
URL = "URL_GOOGLE_SCRIPT_APPS_YANG_SUDAH_DI_DEPLOY_TADI"
' Sesuaikan range yang ingin Anda kirim
Set dataRange = Worksheets("Sheet1").Range("A1:H100")
' Membuat string data untuk dikirim
postData = "{""data"": ["
' Iterasi melalui setiap sel dalam range dan menambahkannya ke string postData
For Each cell In dataRange
postData = postData & "{""row"": " & cell.row & ", ""col"": " & cell.column & ", ""value"": """ & cell.value & """},"
Next cell
' Menghapus koma ekstra di akhir string postData
postData = Left(postData, Len(postData) - 1)
' Menutup string postData
postData = postData & "]}"
' Membuat objek XMLHTTP
Set HTTPReq = CreateObject("MSXML2.ServerXMLHTTP")
' Mengirim data ke Google Sheets
With HTTPReq
.Open "POST", URL, False
.setRequestHeader "Content-Type", "application/json"
.send postData
responseText = .responseText
End With
' Menampilkan popup
MsgBox "Data telah dikirim", vbInformation, "Javabitpro.com"
End Sub
Silahkan ganti Url tersebut dengan Url dari Google Script App yang tadi sudah di Deploy.
13. Buka Module 2, lalu copy script di bawah ini ke Module 2.
Masukkan Password Untuk Melihat Script (Password sama dengan di atas)
' VBA (di Excel 2010) dengan pustaka JSON VBA
Sub AmbilDataDariGoogleSheets()
Dim URL As String
Dim HTTPReq As Object
Dim responseText As String
Dim json As Object
Dim dataRows As Collection
Dim i As Integer
Dim j As Integer
' Sesuaikan URL dengan URL dari Google Apps Script Anda
URL = "URL_GOOGLE_SCRIPT_APPS_YANG_SUDAH_DI_DEPLOY_TADI" ' Ganti dengan URL proyek Anda
' Membuat objek XMLHTTP
Set HTTPReq = CreateObject("MSXML2.ServerXMLHTTP")
' Mengambil data dari Google Sheets
With HTTPReq
.Open "GET", URL, False
.Send
responseText = .responseText
End With
' Mengonversi teks JSON menjadi objek
Set json = JsonConverter.ParseJson(responseText)
' Menampilkan data di Excel, dimulai dari sel A1
Set dataRows = New Collection
If TypeName(json) = "Collection" Then
' Jika json adalah koleksi
For Each Row In json
dataRows.Add Row
Next Row
Else
' Jika json bukan koleksi
MsgBox "Data yang diterima tidak dalam format yang diharapkan.", vbExclamation, "Peringatan"
End If
' Menampilkan data dua dimensi ke dalam sel A1:C10
i = 1
For Each Row In dataRows
j = 1
For Each Item In Row
Cells(i, j).Value = Item
j = j + 1
Next Item
i = i + 1
Next Row
' Menampilkan popup
MsgBox "Data telah diambil", vbInformation, "Javabitpro.com"
End Sub
' VBA (di Excel 2010) dengan pustaka JSON VBA
Sub AmbilDataDariGoogleSheets()
Dim URL As String
Dim HTTPReq As Object
Dim responseText As String
Dim json As Object
Dim dataRows As Collection
Dim i As Integer
Dim j As Integer
' Sesuaikan URL dengan URL dari Google Apps Script Anda
URL = "URL_GOOGLE_SCRIPT_APPS_YANG_SUDAH_DI_DEPLOY_TADI" ' Ganti dengan URL proyek Anda
' Membuat objek XMLHTTP
Set HTTPReq = CreateObject("MSXML2.ServerXMLHTTP")
' Mengambil data dari Google Sheets
With HTTPReq
.Open "GET", URL, False
.Send
responseText = .responseText
End With
' Mengonversi teks JSON menjadi objek
Set json = JsonConverter.ParseJson(responseText)
' Menampilkan data di Excel, dimulai dari sel A1
Set dataRows = New Collection
If TypeName(json) = "Collection" Then
' Jika json adalah koleksi
For Each Row In json
dataRows.Add Row
Next Row
Else
' Jika json bukan koleksi
MsgBox "Data yang diterima tidak dalam format yang diharapkan.", vbExclamation, "Peringatan"
End If
' Menampilkan data dua dimensi ke dalam sel A1:C10
i = 1
For Each Row In dataRows
j = 1
For Each Item In Row
Cells(i, j).Value = Item
j = j + 1
Next Item
i = i + 1
Next Row
' Menampilkan popup
MsgBox "Data telah diambil", vbInformation, "Javabitpro.com"
End Sub
Silahkan ganti Url tersebut dengan Url dari Google Script App yang tadi sudah di Deploy.
14. Download JsonConverter.bas untuk mengkonversi kalimat JSON String menjadi sebuah Objek yang dapat di tampilkan dari spreadsheet ke dalam Excel. (Klik Disini)
15. Klik menu File pada VBA, lalu pilih Import File. Cari file JsonConverter.bas yang sudah di download. Sehingga pada Folder Module terdapat 3 file.
16. Klik menu Tools pada VBA lalu pilih References.
17. Silahkan cari dan cheklist sesuai gambar di bawah ini. Lalu klik OK.
18. Kembali ke Excel. Buat tombol untuk Mengirim dan Mengambil data dengan cara klik menu Insert - Shapes lalu pilih Rectangle.
19. Buatlah 2 tombol KIRIM DATA dan AMBIL DATA.
20. Klik kanan pada tombol KIRIM DATA lalu pilih Assign Macro. Lalu pilih KirimSemuaDataKeGoogleSheets lalu klik OK.
Lakukan hal yang sama pada tombol AMBIL DATA dan pilih AmbilDataDariGoogleSheets lalu klik OK.
21. Klik menu File pada Excel lalu pilih Save As.
Simpan file excel dengan type Excel Macro-Enable Workbook (*.xlsm)
SELESAI!!!