Cara membuat Invoice otomatis dengan Google Sheet

Sebagai freelancer ataupun sebagai pengusaha sudah hal biasa mengirimkan Tagihan atau Invoice ke klien. Invoice dapat dikirim dalam bentuk kertas ataupun berupa file. Invoice biasanya dikirim ketika dibutuhkan atau dikirim tiap waktu tertentu. Untuk sekarang ini Invoice menggunakan File sudah sangat lumrah tentu saja untuk mempermudah dan menghemat waktu.

Permasalahan sebagai freelancer kadang lupa membuat Invoice, sehingga terlewat waktunya dan berujung tidak terbayar. Sungguh bukan hal yang menyenangkan. Oleh karena itu di artikel ini saya akan menjelaskan bagaimana membuat Invoice otomatis dengan Google Sheet dengan mudah.

Secara garis besar hal ini yang akan kita lakukan:

  1. Persiapkan template invoice di Google Sheet Spreadsheet
  2. Buat Script di Google Script
  3. Jadwalkan Eksekusi Script
  4. Konfigurasi Script di Spreadsheet
  5. Download Template Invoice Gratis

Persiapkan template invoice di Google Sheet Spreadsheet

Kita bisa menggunakan template dari google sheet atau mau custom sendiri. Disini saya menggunakan template dari google sheet dengan beberapa perubahan sedikit sesuai kebutuhan. Contohnya seperti gambar dibawah ini

Buat Script di Google Script

Script ini berfungsi untuk menggenerate template yang kita buat tadi menjadi PDF dan dikirim melalui email gmail kita. Cara menambahkan script pada spreadsheet ini dengan klik Tools -> Script editor. Lalu pastekan script berikut pada script editor

function myFunction() {
  // we assign current spreadsheet object on a variable
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  // get the url the spreadsheet
  var url = ss.getUrl();
  //remove the trailing 'edit' from the url
  url = url.replace(/edit$/,'');

  //additional parameters for exporting the sheet as a pdf
  var url_ext = 'export?exportFormat=pdf&format=pdf' + //export as pdf
    
  //below parameters are optional... to format your pdf attachment 
  '&size=letter' + //paper size
  '&portrait=true'+ //orientation, false for landscape
  '&fitw=true' + //fit to width, false for actual size
  '&sheetnames=false&printtitle=false&pagenumbers=false' + //hide optional
  '&gridlines=false' + //false = hide gridlines
  '&fzr=false' + //do not repeat row headers (frozen rows) on each page
  '&gid=';

  // get token for authorization purpose
  var token = ScriptApp.getOAuthToken();

  // fetch the url with paramaters and get current sheet with name Invoice
  var response = UrlFetchApp.fetch(url + url_ext + ss.getSheetByName("Invoice").getSheetId(),{
		headers: {
			'Authorization': 'Bearer ' +  token
		}
	});

  // assign the response as blob
  var blob =  response.getBlob().setName(ss.getName() + '.pdf');

   MailApp.sendEmail({
	to: "destionation@email.com",
    subject: "Invoice",
    body: "Here is my invoice this month",
    attachments: [blob]
  });

}

Run atau jalankan script yang sudah kita buat tadi. Jika ini run pertama kali maka kita akan mendapatkan konfirmasi otoritas. Ijinkan script agar bisa berjalan. Jika berhasil maka kita akan dapat email seperti dibawah ini

Jadwalkan Eksekusi Script

Script kita sudah jalan, sekarang saatnya konfigurasi jadwal pengeksekusian. Penjadwalan diperlukan agar kita tidak perlu menjalankan script secara manual.

Caranya dengan buka halaman script editor. Edit -> Current’s project trigger. Kita akan diarahkan ke halaman list trigger. Lalu klik button Add Trigger. Karena saya akan mengirimkan invoice ini setiap tanggal 25 maka konfigurasinya akan terlihat seperti ini.

Simpan dan penjadwalan sudah selesai

Konfigurasi Script di Spreadsheet

Tanpa konfigurasi pun script sudah siap digunakan. namun akan sangat merepotkan bila ada perubahan, karena kita mesti lihat script kembali. Oleh karena itu mari kita lakukan step ini agar mempermudah.

Tambahkan Sheet baru dan ubah namanya menjadi Settings. Dan tulis urutan seperti berikut

ubah script paling bawah menggunakan script ini

 var blob =  response.getBlob();
 
  var invoiceNo = ss.getSheetByName("Settings").getRange("B8").getValue();
  var subject = ss.getSheetByName("Settings").getRange("B9").getValue();
  var body = ss.getSheetByName("Settings").getRange("B10").getValue();
  var toUser =ss.getSheetByName("Settings").getRange("B11").getValue()
  var ccTo = ss.getSheetByName("Settings").getRange("B12").getValue()
  var month = ss.getSheetByName("Settings").getRange("B13").getValue()
  var filename = invoiceNo+".pdf";

  MailApp.sendEmail({
    to: toUser,
    cc: ccTo,
    subject: subject,
    body: body,
    attachments: [blob.setName(filename)]
  });

Sekarang kita bisa edit email, cc, subject dan body secara langsung di Sheet Settings.

Download Template Invoice Gratis

Untuk anda yang tidak ada waktu untuk mengikuti tutorial, tenang saja. saya sudah siapkan link untuk anda copy dan gunakan.

Isi email anda untuk mendapatkan Template Invoice otomatis google gratis


Leave a Comment

Your email address will not be published. Required fields are marked *