Berikut ini adalaah script untuk memindahkan data dari spreadsheet ke dalam grup telegram. Langkahnya adalah sebagai berikut:
- Buat sebuah google spreadsheet dengan nama tertentu dan dengan data yang ingin dikirimkan atau di eksport ke dalam sebuah grup telegram;
- Ketuk menu Ekstensi dan ketuk sub menu Apps script kemudian beri nama.
- Salin semua script yang sudah kami sediakan di bawah dan paste atau tempelkan ke dalam app script yang sudah anda siapkan. Pastikan anda hapus dulu isi script tersebut sampai bersih sebelum anda menempelkan script di bawah.
- Sekarang masuk ke dalam teleegram dan buat sebuah grup
- Masuk ke dalam @botfather dan buat sebuah telegrambot kemudian gabungkan telegrambot tersebut ke dalam grup yang sudah dibuat dan jadikan sebagai admin.
- Agar anda bisa mengetahui chat_ID dari grup tersebut, masukan ke dalam grup tersebut username ini @RawDataBot atau yang ini @get_id_bot, dan setelah anda mendapatkan chat_ID dari grup tersebut, anda boleh mengeluarkan dan menghapus @RawDataBot atau @get_id_bot dari grup tersebut.
- Dengan membuat telegrambot di @botfather maka anda sudah mendapatkan token telegram. Dan dengan memasukkan @RawDataBot atau @get_id_bot ke dalam grup, anda sudah mendapatkan chat_ID dari grup. Dan dengan membuat sebuah spreadsheet, maka anda pun sudah mendapatkan ID_spreadsheet. Semua kode tersebut harus dimasukkan ke dalam script sesuai dengan penjelasan yang ada.
Penjelasan detail bisa anda lihat dalm video di bawah:
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Jalankan')
.addItem('Kirim ke Telegram', 'getDataAndSendToTelegramBot')
.addToUi();
}
function getDataAndSendToTelegramBot() {
// Kode yang sama seperti sebelumnya
// ...
}
function getDataAndSendToTelegramBot() {
var token = "TOKEN_TELEGRAM";
var chatId = "CHAT_ID";
var spreadsheetId = "ID_SPREADSHEET";
var sheetName = "NAMA_SHEET";
var columnIndices = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,]; // Indeks kolom yang ingin diambil (A, B, D, C, E)
var spreadsheet = SpreadsheetApp.openById(spreadsheetId);
var sheet = spreadsheet.getSheetByName(sheetName);
var lastRow = sheet.getLastRow();
var headerRange = sheet.getRange(1, 1, 1, sheet.getLastColumn()); // Rentang untuk baris header
var headerValues = headerRange.getValues()[0]; // Mengambil nilai header dalam satu dimensi
var dataRange = sheet.getRange(2, 1, lastRow - 1, columnIndices.length); // Mengambil data dari baris 2 hingga terakhir, dengan jumlah kolom yang ditentukan
var dataValues = dataRange.getValues();
var sentData = getSentDataFromProperties(); // Mendapatkan data yang sudah dikirim sebelumnya
var newData = [];
// Memeriksa setiap baris data baru
for (var i = 0; i < dataValues.length; i++) {
var rowData = dataValues[i];
// Memeriksa apakah baris data sudah pernah dikirim sebelumnya
if (!isDataSent(rowData, sentData)) {
newData.push(rowData); // Menyimpan baris data yang belum pernah dikirim sebelumnya
}
}
// Mengirim data yang belum pernah dikirim sebelumnya ke Telegram
sendNewDataToTelegramBot(token, chatId, newData, headerValues, columnIndices);
// Menyimpan data yang sudah dikirim ke Properties
saveSentDataToProperties(newData, sentData);
}
function isDataSent(rowData, sentData) {
// Memeriksa apakah baris data sudah pernah dikirim sebelumnya berdasarkan kolom-kolom yang relevan
for (var i = 0; i < sentData.length; i++) {
var sentRow = sentData[i];
var isMatch = true;
for (var j = 0; j < sentRow.length; j++) {
if (rowData[j].toString() !== sentRow[j].toString()) {
isMatch = false;
break;
}
}
if (isMatch) {
return true; // Data sudah pernah dikirim sebelumnya
}
}
return false; // Data belum pernah dikirim sebelumnya
}
function sendNewDataToTelegramBot(token, chatId, newData, headerValues, columnIndices) {
var message = "";
// Menampilkan nama header diikuti dengan data pada setiap baris yang belum pernah dikirim sebelumnya
for (var i = 0; i < newData.length; i++) {
var rowData = newData[i];
for (var j = 0; j < headerValues.length; j++) {
var headerValue = headerValues[j];
var cellValue = rowData[columnIndices[j] - 1];
message += headerValue + ": " + cellValue + "\n";
}
message += "\n"; // Memberikan spasi antara setiap baris data
}
if (message !== "") {
sendToTelegramBot(token, chatId, message);
}
}
function sendToTelegramBot(token, chatId, message) {
var telegramUrl = "https://api.telegram.org/bot" + token + "/sendMessage";
var payload = {
"method": "post",
"contentType": "application/json",
"payload": JSON.stringify({
"chat_id": chatId,
"text": message
})
};
UrlFetchApp.fetch(telegramUrl, payload);
}
function getSentDataFromProperties() {
var sentData = [];
// Mendapatkan data yang sudah dikirim sebelumnya dari Properties
var properties = PropertiesService.getUserProperties();
var sentDataString = properties.getProperty("sentData");
if (sentDataString) {
sentData = JSON.parse(sentDataString);
}
return sentData;
}
function saveSentDataToProperties(newData, sentData) {
sentData.push.apply(sentData, newData); // Menggabungkan data yang sudah dikirim sebelumnya dengan data baru
// Menyimpan data yang sudah dikirim ke Properties
var properties = PropertiesService.getUserProperties();
properties.setProperty("sentData", JSON.stringify(sentData));
}