
【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} 件`);
}