gas-convert mengonversi dan mengoptimalkan kode JavaScript agar kompatibel dengan Google Apps Script.
Instalasi
npm install -g gas-convert
Sebelum menggunakan pastikan @google/clasp sudah terinstall di sistem operasi Anda, jika belum terinstall maka install terlebih dahulu.
npm install -g @google/clasp
Setelah itu login
clasp login
Kemudian buat project di direktori saat ini
clasp create
Atau di direktori src
mkdir src && clasp create --rootDir src && mv src/.clasp.json .
Atau clone di direktori saat ini jika Anda sudah membuat project sebelumnya
clasp clone <scriptId> --rootDir .
Atau clone di direktori src jika Anda sudah membuat project sebelumnya
mkdir src && clasp clone <scriptId> --rootDir src && mv src/.clasp.json .
Sintaks CLI gas-convert
gasc <inputFile> <outputFile>
gasc index.js Kode.js
Atau:
gasc index.js src/Kode.js
Unggah hasil konversi ke Google Apps Script
clasp push
Contoh project
Ada 3 cara untuk konversi
Buat file sumber terlebih dahulu, misalnya (utils.js, logger.js, dan index.js), lalu gabungkan menjadi satu file.
Cara ke 1.
// utils.js
export function sayHello(name) {
console.log(`Halo, ${name}!`);
}
// logger.js
export function logMessage(message) {
console.log(`LOG: ${message}`);
}
// index.js
import { sayHello } from './utils.js';
import { logMessage } from './logger.js';
console.log('Program dimulai');
sayHello('GAS');
logMessage('Ini adalah pesan log');
console.log('Program selesai');
Cara ke 2.
// utils.js
export function sayHello(name) {
console.log(`Halo, ${name}!`);
}
// logger.js
export function logMessage(message) {
console.log(`LOG: ${message}`);
}
// index.js
import { sayHello } from './utils.js';
import { logMessage } from './logger.js';
console.log('Program dimulai');
sayHello('GAS');
logMessage('Ini adalah pesan log');
console.log('Program selesai');
// Tambahkan fungsi ke globalThis agar bisa diakses di mana saja
globalThis.sayHello = sayHello;
globalThis.logMessage = logMessage;
Cara ke 3.
// utils.js
export function sayHello(name) {
console.log(`Halo, ${name}!`);
}
// logger.js
export function logMessage(message) {
console.log(`LOG: ${message}`);
}
// index.js
import { sayHello } from './utils.js';
import { logMessage } from './logger.js';
console.log('Program dimulai');
function doPost(e) {
console.log('App Started');
// Daftarkan fungsi ke globalThis saat doPost dipanggil
globalThis.sayHello = sayHello;
globalThis.logMessage = logMessage;
// Contoh pemanggilan fungsi setelah terdaftar di globalThis
sayHello('GAS');
logMessage('Ini adalah pesan log');
console.log('Program selesai');
}
globalThis.doPost = doPost;
Penjelasan Hasil konversi Satu per Satu
1️⃣ Hasil Konversi Pertama
✅ Penjelasan:
- Semua kode berjalan langsung saat script dieksekusi.
- Fungsi
sayHellodanlogMessagelangsung dipanggil setelah definisi. - Tidak ada
globalThis, jadi fungsi tidak bisa diakses dari luar file. - Ini cocok untuk sistem yang tidak perlu fungsi global, tetapi kurang fleksibel untuk Google Apps Script.
2️⃣ Hasil Konversi Kedua
✅ Penjelasan:
- Kode tetap langsung dieksekusi seperti pada Cara ke 1.
- Perbedaan utama adalah fungsi
sayHellodanlogMessageditambahkan keglobalThis, sehingga bisa dipanggil dari luar. - Contoh:
sayHello('GAS'); // Bisa dipanggil di Google Apps Script
logMessage('Pesan baru');
- Kelebihan: Bisa digunakan di luar file.
- Kekurangan: Masih kurang fleksibel karena kode langsung berjalan saat file dimuat, bukan hanya saat diperlukan.
3️⃣ Hasil Konversi Ketiga
✅ Penjelasan:
- Tidak seperti cara sebelumnya, sekarang fungsi tidak langsung berjalan kecuali melalui
doPost(). - doPost() sebagai titik masuk utama untuk Google Apps Script.
- Saat
doPost()dipanggil:
Logger.log("App Started")dieksekusi.sayHellodanlogMessageditambahkan keglobalThis.- Fungsi dipanggil untuk menunjukkan bahwa mereka bekerja.
Logger.log("Program selesai")dicetak di akhir.
- Kelebihan:
- Lebih fleksibel karena hanya berjalan saat
doPost()dipanggil. - Fungsi tetap bisa digunakan di luar
doPost(). - Kompatibel dengan Google Apps Script.
Kesimpulan
| Versi | Kapan Kode Berjalan? | Bisa Pakai globalThis? | Cocok Untuk? |
|---|---|---|---|
| Cara ke 1 | Langsung saat script dijalankan | ❌ Tidak | Skrip mandiri |
| Cara ke 2 | Langsung saat script dijalankan | ✅ Ya | Bisa diakses di luar file, tapi tetap langsung berjalan |
| Cara ke 3 | Hanya saat doPost() dipanggil | ✅ Ya | Google Apps Script, lebih fleksibel |
doPost() dipanggil.