見出し画像

【GAS】Google Apps Script 活用事例 消去系スクリプトまとめ

スニペットも詰め込み過ぎて、少し見づらくなってきてしまっているので、別エントリーとしてあってもいいのかなと思い、消去系スクリプトだけを、まとめました。

カレンダーから特定の予定を削除する

カレンダーの場合、スクリプト実行後に、Ctirl + Zが効かなかった記憶があります。やる時は必ず自分のカレンダーでテストしてからやった方が無難です。

function deleteEvents() {
 const calendar = CalendarApp.getDefaultCalendar();
 const date     = new Date(); 
 const events   = calendar.getEventsForDay(date);

 for (const event of events) {
 
 //イベントタイトルに仮が含まれていれば、削除
 const eventTitle = event.getTitle();
   if(eventTitle.indexOf('仮') !== -1){
     event.deleteEvent();
   }//if
 }//for
}//end

シート上のメモの消去、塗り潰しのリセット、罫線の削除

function clearNoteAndBorder() {
 const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
 const sheet       = spreadsheet.getSheetByName('競合調査');
 const range       = sheet.getDataRange();

 //罫線とメモを削除
 range
 .setBackground(null)
 .setBorder(false, false, false, false, false, false)
 .clearNote();

 console.log(range.getA1Notation());

}

不要なシートを削除

arrayには、削除したくないシートを記載しておくと、それ以外の不要なシートを全て削除してくれるスクリプトです。

function deleteSheets() {
 const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
 const sheets      = spreadsheet.getSheets();
 //削除したくないシートを配列に入れておく
 const array       = ['【2021】イベントカレンダー', '【2021】面接官シフト'];
 
 for(const sheet of sheets){
   const sheetName = sheet.getName();

   if(array.indexOf(sheetName)=== -1){
     console.log(sheet.getName());
     spreadsheet.deleteSheet(sheet);
   }
 }//for
}

前職で、必要なシートを左に移動して、左から2番目以降のシートを削除するスクリプトを実装しました。

const sheet = spreadsheet.getSheetByName('index');
SpreadsheetApp.setActiveSheet(sheet); 
spreadsheet.moveActiveSheet(1);
function deletesheets() {
 const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
 const sheets      = spreadsheet.getSheets();
 const max         = spreadsheet.getNumSheets();

 console.log(`処理前のシート最大枚数 ${max}`);

 for(let i = max; i > 2; i--){
   const current = i-1;     
   const sheet   = sheets[current];
   console.log(`${current} 枚目 ${sheets[current].getName()}`);

   spreadsheet.deleteSheet(sheet);   
 }
}

deleteFile ファイルの移動

ちょっと前まで、addFile後に、deleteFileをしていましたが、今は、moveFileメソッドがあります。こちらはスニペットにも記載しましたが、コピーと名前がついているファイルを、別のフォルダに移すスクリプトです。

function getDriveFiles(){
 const folder      = DriveApp.getFolderById('****************'); //元のフォルダ
 const files       = folder.getFiles();
 const destination = DriveApp.getFolderById('***********'); //移動先のフォルダ

 console.log(`元のフォルダ ${folder.getName()}`);
 console.log(`移動先 ${destination.getName()}`);

 let count = 0;

 while (files.hasNext()) {
   const file     = files.next();
   const fileName = file.getName();

   if(fileName.includes('コピー')){
     console.log(fileName);
     const replacedName = fileName.replace(' のコピー', '');

     //replaceと移動
     file
     .setName(replacedName)
     .moveTo(destination);
   count += 1;
   }
 }
console.log(`${count} 件`);
}

この記事が気に入ったらサポートをしてみませんか?