例えば、「任意の文字が入ったラベルを検索して削除したい」といった場合に使える方法です。
Gmailのラベルを作成する関数|createLabel
まずは、サンプル用のラベルを作成します。
GmailApp.createLabel('テストラベル');
この1行の実行をするだけで、引数内のラベルを作成することができます。一気に作成したいときは、配列でループして入れるか、他の何かの条件でループ文を回して一気に入れることもできます。
スクリプトを実行すると、いつものように権限の確認画面が出るので設定していきます。※方法については過去の記事に書いていますのでご参考ください。
ラベルが作成されました。
配列でクリエイトしてみます。
function myCreateLabel() {
let array = ['apple', 'orange', 'grape'];
GmailApp.createLabel(array[0]);
}
作成されました。
Gmailのラベルを作成する|配列でループ
配列でループさせると、一気に作成できます。
function myCreateLabel() {
let array = ['ラベル1', 'ラベル2', 'ラベル3', 'ラベル4'];
for(i=0; i<array.length;i++){
GmailApp.createLabel(array[i]);
}
}
Gmailのラベルを削除する関数|deleteLabel()
本題ですが、GASには、Gmailのラベルを削除するための関数があります。
deleteLabel()
こちらを使って、現在作成されているラベルを削除することができます。
Gmailの現在のラベルを取得する(GmailApp.getUserLabels)
まずは、現在のラベルを取得します。ラベルは「GmailApp.getUserLabels()」を使って取得することができます。
function deleteAllLabel() {
const labels = GmailApp.getUserLabels();
}
これで、現在のラベルが取得できます。
function deleteSelectLabel() {
const labels = GmailApp.getUserLabels();
for(let i=0;i<labels.length;i++) {
Logger.log(labels[i].getName());
}
}
Gmailのラベルを削除する|deleteLabel()
ラベルを削除します。ラベルの削除は「deleteLabel()」で削除することができます。
function deleteAllLabel() {
const labels = GmailApp.getUserLabels();
for(let i=0;i<labels.length;i++) {
labels[i].deleteLabel();
}
}
前回も書きましたが、この方法だと全てのラベルが消えてしまいますので、今回は条件を指定してみます。
ラベルを検索して条件に一致したラベルのみ削除する
指定文字列が含まれているかどうか?を条件指定してみます。
String.match(searchPattern [option])
String.includes(searchPattern)
このあたりが使えそうです。
function deleteSelectLabel() {
const labels = GmailApp.getUserLabels();
for(let i=0;i<labels.length;i++) {
if(labels[i].getName().includes('ラベル')){
Logger.log(labels[i].getName());
labels[i].deleteLabel();
}
}
}
ラベルが一気に削除されました!!
もし検索が末尾まで進んで実行時にエラーが表示される場合は、エラー処理(try・・・catch)を入れる方法もあります。
try {
if(labels[i].getName().includes('from.eguchi2@gmail.com')){
Logger.log(labels[i].getName());
labels[i].deleteLabel();
}
}catch(e){
deleteSelectLabel();
}
まとめ
指定した検索文字が含まれたラベルを一気に削除することができました!ただし実行すると復活することはできないので、操作はくれぐれも慎重に行いましょう。
御参考ください。