Final Project PBKK (A) - Google Apps Script for Cloud-Based Data Search

Nama : Andhika Lingga Mariano
NRP : 5025211161
Kelas : PBKK (A)
Tahun Ajaran : 2023/2024


Pada minggu terakhir perkuliahan PBKK (A), kami diminta untuk mencari sebuah paper yang berhubungan dengan aktivitas pembuatan perangkat lunak/aplikasi menggunakan framework kemudian mengimplementasikan paper tersebut. Kami menemukan sebuah paper yang menggunakan Google Apps Script dalam pembuatan database. Berikut merupakan dokumentasi dari hasil pengerjaan Final Project kami.

Paper Referensi :



Buatlah deskripsi studi kasus aplikasi ditinjau dari MVC nya(individu)

Aplikasi kami adalah aplikasi yang berupa aplikasi web yang terintegrasi dengan Google Apps Script yang bisa menampilkan data dari spreadsheet ke view website, meng-insert data dari view website ke spreadsheet, dan bisa melakukan read/menampilkan data sesuai dengan search term user dan bisa diurutkan berdasarkan kolom


  • Model

Satu sheet (table) yang bernama Produk. Atribut: ID Produk, Nama Produk, Deskripsi Produk, Kategori Produk, Negara Asal, Kondisi Produk (baru atau bekas), Harga, Stok, dan Timestamp ketika produk di-insert atau di-update.


  • View:

  1. Insert view (memasukkan data produk)

  2. List view (lihat semua data produk, juga mengandung fungsionalitas delete)

  3. Search view (lihat semua data produk yang sesuai dengan search terms)

  4. Edit view (memodifikasi data produk)


  • Controller:

  1. InsertController: menambahkan data produk baru ke spreadsheet

  2. ListController: menampilkan seluruh data produk

  3. SearchController: menampilkan data produk sesuai dengan pencarian

  4. EditController: meminta data baru kepada pengguna dan mengubah data di sheets

  5. DeleteController: menghapus record data yang dipilih


Buatlah rancangan umum arsitektur atau fitur yang ada dalam aplikasi  (individu)

Website kami terdiri dari satu tampilan utama yang mana mengandung berbagai view yang disebutkan di atas. Aplikasi dibuat demikian agar seorang pengguna dapat dengan mudah melakukan semua fungsionalitas CRUD dengan cepat dan tanpa distraksi.


Fitur-fitur yang ada adalah aplikasi kami meliputi:

  1. Create

  2. Read

  3. Update

  4. Delete



Rancang desain databasenya  (individu)




Buat desain front end  (individu)




Tentukan Control yang akan mengandle logika back end.  (individu)


1. Fungsi Create Record untuk membuat record baru : 


function createRecord(values) {
  try {
    let valueRange = Sheets.newRowData();
    valueRange.values = values;

    let appendRequest = Sheets.newAppendCellsRequest();
    appendRequest.sheetId = SPREADSHEETID;
    appendRequest.rows = valueRange;

    Sheets.Spreadsheets.Values.append(valueRange, SPREADSHEETID, DATARANGE, { valueInputOption: "RAW" });
  } catch (err) {
    console.log('Failed with error %s', err.message);
  }
}

2. Fungsi Read Record untuk membaca record yang ada :

function readRecord(range) {
  try {
    let result = Sheets.Spreadsheets.Values.get(SPREADSHEETID, range);
    return result.values;
  } catch (err) {
    console.log('Failed with error %s', err.message);
  }
}

3. Fungsi Update Record untuk mengupdate record yang ada :

function updateRecord(values, updateRange) {
  try {
    let valueRange = Sheets.newValueRange();
    valueRange.values = values;
    Sheets.Spreadsheets.Values.update(valueRange, SPREADSHEETID, updateRange, { valueInputOption: "RAW" });
  } catch (err) {
    console.log('Failed with error %s', err.message);
  }
}

4. Fungsi Delete Record untuk delete record yang ada :

function deleteRecord(id) {
  const rowToDelete = getRowIndexById(id);
  const deleteRequest = {
    "deleteDimension": {
      "range": {
        "sheetId": DATASHEETID,
        "dimension": "ROWS",
        "startIndex": rowToDelete,
        "endIndex": rowToDelete + 1
      }
    }
  };
  Sheets.Spreadsheets.batchUpdate({ "requests": [deleteRequest] }, SPREADSHEETID);
  return getLastTenRecords();
}

5. Fungsi Search Record untuk mencari record dari record-record yang ada :

function searchRecords(formObject) {
  let result = [];
  try {
    if (formObject.searchText) {//Execute if form passes search text
      const data = readRecord(DATARANGE);
      const searchText = formObject.searchText;

      // Loop through each row and column to search for matches
      for (let i = 0; i < data.length; i++) {
        for (let j = 0; j < data[i].length; j++) {
          const cellValue = data[i][j];
          if (cellValue.toLowerCase().includes(searchText.toLowerCase())) {
            result.push(data[i]);
            break; // Stop searching for other matches in this row
          }
        }
      }
    }
  } catch (err) {
    console.log('Failed with error %s', err.message);
  }
  return result;
}


Implementasikan rancangan yang sudah dibuat menggunakan Framework NET, CI ataupun Framework Google (pilih salah satu - bisa kelompok maks 3)


Link Deploy:

https://script.google.com/macros/s/AKfycbyyVa44a8Y5JUh9U2y0oC53m_UYv86-rkzPw0S7-gjg7hvNSLjzDaTKWA78WlBW1yah/exec


Link Apps Script:

https://script.google.com/d/1IhjHI6AuVsJRmFmcwMU5yTQcxdi-2xoBnaYlg3pr5V6N28I9M1Kka04M/edit?usp=sharing


Link Spreadsheet:

https://docs.google.com/spreadsheets/d/1Hr7_qIrwh8k2BnteoMyzTgEQrEMStRhyfDuBIebwr8o/edit?usp=sharing


Buat video presentasinya, upload di youtube, dan didokumentasikan di blog.



Anggota Kelompok:

- Frederick Yonatan Susanto (5025211121)
- Andhika Lingga Mariano (5025211161)
- Richie Seputro (5025211213)

Comments

Popular posts from this blog

Perkenalan PBKK (A)