-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathHashtags.js
142 lines (110 loc) · 4.24 KB
/
Hashtags.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
import "google-apps-script";
// variable global umum
// Masukkan ID File Sheetmu Di SINI
let ssid = "1UrHII0XK-HIpdsUJHqakTB5lNlwIlyOqJFANvCDXTT4";
// nama sheet nya
let sheetName = "tags";
// buat variable baru untuk menampung sheet nya
let sheet = SpreadsheetApp.openById(ssid).getSheetByName(sheetName);
// --- spesifik
// menentukan kolom pertama dimana nama tag di simpan, yakni Name
let kolom = 1;
// pencarian dimulai dari baris ke 2
// baris pertama kita pakai buat judul kolom sheet tag (name dan value)
let baris = 2;
// inisiasi posisi kolom hasil (nilai tag)
let kolomHasil = 2;
// fungsi untuk menambah tag
function tagTambah(kata, isi) {
// cari dulu kata tag-nya sudah ada apa belum
// fungsi pencariannya ada dibawah
let barisTag = tagCariIndex(kata);
// jika tag sudah ada, kita akan update
if (barisTag) {
// tentukan target range untuk diupdate
let targetRange = sheet.getRange(barisTag, kolomHasil);
targetRange.setValues([[isi]]);
// tampilkan pesan tag sudah berhasil diupdate
return "☑️ Tag " + kata + " diupdate";
// jika tag belum ada, kita tambahkan
} else {
// cari posisi terakhir di sheet dan tambahkan
let lastRow = sheet.getLastRow();
sheet.appendRow([kata, isi]);
// tampilkan pesan tag sudah berhasil ditambahkan
return "✅ Tag " + kata + " sudah ditambahkan";
}
}
// fungsi untuk menghapus tag
function hapusTag(kata) {
// cari dulu kata tag-nya sudah ada apa belum
let barisTag = tagCariIndex(kata);
// jika tag sudah ada, kita hapus
if (barisTag) {
sheet.deleteRow(barisTag);
return "✅ Tag " + kata + " telah dihapus.";
} else {
// kalau gak ketemu, tampilkan saja pesan error
return "ℹ️ Tag " + kata + " tidak ditemukan untuk dihapus.";
}
}
// fungsi buat nyari tag dan temukan isinya
function tagCari(kata) {
// menemukan nomor index
// hasilnya -2 sesuai start barisnya
let indexCari = tagCariIndex(kata);
// definisikan hasil dulu, anggap gagal atau tidak ketemu
let hasil = false;
// jika pencarian berhasil, update hasilnya
if (indexCari) {
// tentukan kolom isi tag, yakni di kolom berikutnya (kolomHasil=2)
let tagIsi = sheet.setActiveRange(
sheet.getRange(indexCari, kolomHasil)
);
// hasil isi tag dijadiin return value fungsi
hasil = tagIsi.getValue();
}
return hasil;
}
// fungsi buat membuat daftar semua tag name
function tagList() {
// mendapatkan semua isi kolom buat dicari
// dimulai dari baris 2
let isiKolom = sheet.getRange(baris, kolom, sheet.getLastRow()).getValues();
// definisikan hasil dulu
let hasil = "🔖 Tag tersedia:\n\n";
for (var i = 0; i < isiKolom.length; i++) {
// susun berjejer kesamping
// jika ingin kebawah, ganti " " dengan "\n"
hasil += isiKolom[i][0] + " ";
}
return hasil;
}
// fungsi buat nyari tag dan hasilnya berupa nomor barisnya saja
// agar bisa dipakai disemua fungsi yang memerlukannya
function tagCariIndex(kata) {
// buat regex kata kunci yang sama persis kecuali huruf besar kecil (inCase Sensitive)
let kataKunci = new RegExp("^" + kata + "$", "i");
// mendapatkan semua isi kolom buat dicari
// dimulai dari baris 2
let isiKolom = sheet.getRange(baris, kolom, sheet.getLastRow()).getValues();
// menemukan nomor index
// hasilnya -2 sesuai baris memulainya
let indexCari = isiKolom.findIndex(kataKunci);
// definisikan hasil dulu, anggap gagal atau tidak ketemu
let hasil = false;
// jika pencarian berhasil, update hasilnya
if (indexCari != -1) {
// hasil kita tambah sesuai baris mulai (2)
hasil = indexCari + baris;
}
return hasil;
}
// fungsi buat nyari text di dalam array dipakai di fungsi tagCariIndex
// kata kunci search dalam mode regex
// cuma temuan pertama aja yang dihasilkan
Array.prototype.findIndex = function (search) {
if (search == "") return false;
for (var i = 0; i < this.length; i++) if (search.exec(this[i])) return i;
return -1;
};