Cara Membuat Menu Kunci Kustom di Google Spreadsheet

· 5 min read
Cara Membuat Menu Kunci Kustom di Google Spreadsheet
Photo by Campaign Creators / Unsplash

Di banyak lingkungan kolaboratif, mengelola akses ke data tertentu di Google Spreadsheet sangat penting untuk menjaga keakuratan dan privasi data. Artikel ini menunjukkan cara membuat sistem di mana pengguna dapat mengedit sel tertentu hanya setelah memberikan detailnya.

Kami akan mencapai hal ini menggunakan Google Apps Script, alat otomatisasi canggih untuk Google Spreadsheet.

Menyiapkan Google Spreadsheet:

Untuk memulai, buat Google Sheet, dan susunlah untuk menyertakan detail pengguna. Untuk contoh ini, kita akan menggunakan kolom untuk "Nama," "Email," dan "Detail." Bagian "Detail" kolom akan digunakan untuk menunjukkan apakah pengguna telah memberikan rinciannya.

gambar
gambar

Peran Skrip Google Apps:

Google Apps Script adalah inti dari solusi kami. Alat skrip ini memungkinkan kami mengotomatiskan tugas di Google Spreadsheet. Dalam hal ini, ini akan membantu mengontrol akses sel dan melacak pengeditan pengguna.

Skrip untuk Mengelola Akses Sel: Kita akan mulai dengan membuat skrip yang memeriksa apakah pengguna telah memberikan detailnya. Skrip ini akan memberikan akses edit ke sel tertentu setelah detail pengguna dikonfirmasi.

function onEdit(e) {
  var sheet = e.source.getSheetByName("YourSheetName");
  var editedRange = e.range;
  var username = Session.getActiveUser().getEmail();
  var timestamp = new Date();

  // Check if user's details are in place.
  var detailsRange = sheet.getRange("B2:B10"); // Adjust to your specific details range.
  var userRowIndex = detailsRange.createTextFinder(username).findNext().getRow();

  if (userRowIndex > 0) {
    // Grant edit access to specific cells (e.g., columns C and D).
    var editRange = sheet.getRange(userRowIndex, 3, 1, 2);
    var protection = editRange.protect();
    protection.removeEditors(protection.getEditors());
    protection.addEditor(username);
  }
}

Skrip ini, ketika dipicu oleh peristiwa edit, memeriksa apakah detail pengguna ada di bagian "Detail" kolom. Jika ditemukan, ini memberikan akses edit ke sel tertentu (misalnya kolom C dan D). Pengguna hanya dapat mengedit setelah detailnya dikonfirmasi.

Membuat Google Sheet Khusus Dengan "Kunci Sel" Tombol

Bayangkan Anda memiliki Google Sheet khusus yang memungkinkan orang mengisi beberapa informasi, namun hanya setelah mereka memberi tahu kami siapa mereka. Artikel ini akan menunjukkan cara melakukannya, dan kami bahkan akan menambahkan fitur "Kunci Sel" tombol untuk membuatnya lebih mudah!

Langkah 1: Buat Google Sheet Anda

  • Pertama, buka Google Spreadsheet.
  • Klik pada ekstensi
  • Buat lembar baru, dan tambahkan beberapa kolom untuk nama, email, dan hal lainnya.

Langkah 2: Gunakan Skrip Ajaib (Skrip Google Apps)

  • Google Apps Script seperti keajaiban untuk Google Sheet Anda. Itu dapat melakukan banyak hal untuk Anda secara otomatis.
  • Berikut skrip khusus yang akan kami gunakan. Ia memeriksa apakah seseorang telah membagikan nama dan emailnya.

NAMA LEMBAR HARUS SESUAI DENGAN “Nama Lembar Anda” DI KODE

function onEdit(e) {
  var sheet = e.source.getSheetByName("YourSheetName");
  var editedRange = e.range;
  var username = Session.getActiveUser().getEmail();
  var timestamp = new Date();

  // Check if someone shared their details.
  var detailsRange = sheet.getRange("B2:B10");
  var userRowIndex = detailsRange.createTextFinder(username).findNext().getRow();

  if (userRowIndex > 0) {
    // Let them edit special cells (e.g., columns C and D).
    var editRange = sheet.getRange(userRowIndex, 3, 1, 2);
    var protection = editRange.protect();
    protection.removeEditors(protection.getEditors());
    protection.addEditor(username);
  }
}

Langkah 3: Tambahkan "Kunci Sel" Tombol

  • Kami akan membuatnya lebih mudah lagi. Mari kita tambahkan "Kunci Sel" tombol ke Google Sheet Anda. Jadi, ketika seseorang ingin mengunci ponselnya, mereka hanya perlu mengklik tombol tersebut.
function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Lock Cells Menu')
    .addItem('Lock Your Cells', 'lockYourCells')
    .addToUi();
}

function lockYourCells() {
  // This is where we lock the cells when someone clicks the button.
  // They can only click it after sharing their details.
}

Berikut kode lengkapnya jika Anda tidak ingin membuat dua kode terpisah.

gambar
gambar
gambar

Simpan skrip, dan klik “Jalankan.” Sistem akan memberi Anda perintah di bawah ini.

gambar
gambar
gambar
gambar

Kode lengkapnya:

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  var currentUserEmail = Session.getActiveUser().getEmail();
  
  if (currentUserEmail === "[email protected]") {
    ui.createMenu('Lock Menu')
      .addItem('Lock Cells', 'showDialog')
      .addToUi();
  }
}

function showDialog() {
  var ui = SpreadsheetApp.getUi();
  var result = ui.prompt(
    'Lock Cells',
    'Enter the cell range to lock (e.g., A1:A10):',
    ui.ButtonSet.OK_CANCEL
  );

  if (result.getSelectedButton() == ui.Button.OK) {
    var rangeToLock = result.getResponseText();
    lockCells(rangeToLock);
  }
}

function lockCells(rangeToLock) {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var activeSheet = spreadsheet.getActiveSheet();

  // Lock the specified cell range.
  var protection = activeSheet.getRange(rangeToLock).protect();
  protection.removeEditors(protection.getEditors());
  protection.addEditor(Session.getActiveUser());

  // Apply a background color to indicate locked cells.
  var lockedColor = '#e6e6e6'; // Light gray color.
  var range = activeSheet.getRange(rangeToLock);
  range.setBackground(lockedColor);
  
  // Create a time-based trigger to unlock the cells after 3 minutes.
  ScriptApp.newTrigger("unlockCells")
    .timeBased()
    .after(3 * 60 * 1000)  // 3 minutes in milliseconds
    .create();
}

function unlockCells() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var activeSheet = spreadsheet.getActiveSheet();
  
  // Define the range of cells to unlock, matching the locked range.
  var rangeToUnlock = "A1:A10";  // Adjust this to your specific range.

  // Remove the protection and clear the background color.
  var protection = activeSheet.getRange(rangeToUnlock).protect();
  protection.remove();
  activeSheet.getRange(rangeToUnlock).setBackground('');
}

Dalam skrip ini:

  • Admin dapat mengklik "Kunci Sel" untuk mengunci sel tertentu dan menerapkan warna latar belakang.
  • Setelah mengunci, pemicu berbasis waktu dibuat untuk menjalankan fungsi unlockCells setelah 3 menit.
  • Atur warna latar belakang setelah membuka kunci sel secara efektif.
  • Hanya admin/Anda yang akan melihat LOCK MENU

Ganti "[email protected]" Dengan Alamat Email Admin Sebenarnya di Kode.

Langkah 4: Buat Jadwal

  • Anda ingin sel-sel mengunci diri pada waktu tertentu, seperti waktu tidur.
  • Kami akan menggunakan jam khusus (pemicu berdasarkan waktu) untuk melakukan itu.
HARAP INGAT UNTUK NAMA SKRIP ANDA. Saya telah menamai pemantauan kelas saya. Meskipun kode tersebut akan tetap berfungsi tanpa nama skrip

HARAP INGAT UNTUK NAMA SKRIP ANDA. Saya telah menamai pemantauan kelas saya. Meskipun kode tersebut akan tetap berfungsi tanpa nama skrip

gambar

Biarkan sebagai "Kepala".

gambar
gambar

Langkah 5: Bagikan Lembarnya

  • Sekarang, Anda dapat membagikan Google Sheet Anda dengan teman atau anggota tim Anda.
  • Mereka dapat menggunakan "Kunci Sel" tombol untuk mengunci sel mereka.

Kesimpulan:

Dengan sistem ajaib ini dan "Kunci Sel" tombol, Anda dapat mengontrol siapa yang dapat mengedit Google Sheet Anda. Ini seperti mengundang teman ke pesta Anda, namun mereka perlu memberi tahu Anda namanya sebelum bisa bermain dengan mainan Anda.