Membereskan Shared Link Google Drive Sekaligus!

Saya sempat mencari cara dengan menggunakan rclone
karena saya pengguna berat program ini, namun setelah membaca dengan
teliti, ternyata rclone
tidak mendukung modifikasi ini.
Saya pun berlanjut mencoba mencari client CLI lain yang bisa saya
gunakan untuk menghilangkan properti ini dari file saya. Nihil.
Kalau tidak salah, suatu malam, saya tidak sengaja berselancar dan menemukan sebuah blog, di mana penulisnya ingin mengubah hal yang sama, namun spesifik pada pengguna tertentu. Di dalam tulisannya, dia menggunakan sebuah layanan dari Google, yaitu Google App Script. Itu adalah menu baru bagi saya.
Jika ada yang bertanya di mana saya menemukan tulisan itu, saya tidak ingat. Kebetulan waktu itu saya sudah mengantuk dan Firefox Android saya sedang dalam mode Pribadi. Bagi kalian yang tidak tahu, manajemen memori di Firefox masih jelek hingga sekarang. Laman yang baru saja kamu buka, ketika kamu tidak sengaja membuka notifikasi chat dari orang lain (misalnya, intinya kamu membuka hal lain selain Firefox), maka laman Anda akan dipaksa untuk dimuat ulang.
Langsung saja, kamu bisa membuka Google Apps Script pada akun yang kamu gunakan, dan buat sebuah skrip baru. Sedikit disclaimer, saya tidak membaca dan belajar jauh mengenai pembuatan skrip pada Google Apps Script ini, dan sedikit tebak-tebakan, googling apa yang saya butuhkan. Sehingga kualitas kode saya mungkin perlu dipertanyakan.
// Buat fungsi untun menghapis public ink secara recursif entah file atau folder
function removePublicLinks(folder) {
if (folder.getSharingAccess() !== DriveApp.Access.PRIVATE) {
// Log
.log("Folder " + folder.getName() + " is public, removing link.");
Logger// buat foldernya jadi privat
.setSharing(DriveApp.Access.PRIVATE, DriveApp.Permission.NONE);
folder
}// Proses files yang ada di folder saat ini:
// Ambil semua file
var files = folder.getFiles();
// Loop ke file file berikutnya
while (files.hasNext()) {
// File yang mau diproses sekarang
var file = files.next();
// Log lagi ngapain file
// Logger.log("Processing file: " + file.getName());
// Cek apakah punya public link
if (file.getSharingAccess() !== DriveApp.Access.PRIVATE) {
.log("Removing public link from file: " + file.getName());
Logger// Buat filenya privat
.setSharing(DriveApp.Access.PRIVATE, DriveApp.Permission.NONE);
file
}
}
// subfolder dong
// ambil semua subfolders, formatnya sama seperti file
var subfolders = folder.getFolders();
// Loop
while (subfolders.hasNext()) {
// subfolder yang mau di proses
var subfolder = subfolders.next();
// Log supaya tahu lagi dimana
.log("Entering folder: " + subfolder.getName());
Logger// rekursif hapus permission
removePublicLinks(subfolder);
}
}
// real program, ganti idnya dengan folder id yang ada di url ketika dibuka di browser:
removePublicLinks(DriveApp.getFolderById("9a8s0d98ASDU3I914_9asd87f8ass7d"));
Simpan, dan jalankan. Tunggu hingga selesai, dan jika masih ragu sebenarnya ada logging di atas supaya lebih chatty, tapi intinya tinggal nunggu saja semua selesai.
Semoga bermanfaat!