GAS[Google Apps Script]二次元配列で特定ワードを含む行削除、昇順並び替え、不要列削除、空白行削除
function test() {
var AS = SpreadsheetApp.getActiveSheet() // アクティブシートを選択
var lastRow = AS.getLastRow() // 入力最終行を調べる
const original = AS.getRange(1, 1, lastRow, 8).getValues() // ここでは8列を二次元配列に格納
// 不要行を削除 不参加予定の人の行は消す ///////////
for (var i = 0; i < original.length; i++) {
if (original[i].indexOf("*不参加*") === -1) continue // ワイルドカードのアスタリスクで部分一致を選別して削除
original.splice(i, 1)
i--
}
for (var i = 0; i < original.length; i++) {
if (original[i].indexOf("*欠席*") === -1) continue // 二つ目のワードを追加したい時はforからの一連を追加
original.splice(i, 1)
i--
}
// 格納した出席者のフリガナ列をアイウエオ順に並び替え ///////////
original.sort(sorting_asc) // ascは昇順です。降順ならdesc
function sorting_asc(a, b){
if(a[6] < b[6]){ // ここではフリガナ列は7列目にあります
return -1
}else if(a[6] > b[6] ){
return 1
}else{
return 6
}
}
// 不要列を削除 ///////////
var DeleteColumn1 = [0, 1, 2, 3, 4, 5] // ここでは1~6列目は用が無くなったので削除して列を詰めます
for(var i=0; i<original.length; i++){
for(var j=0; j<DeleteColumn1.length; j++){
original[i].splice(DeleteColumn1[j]-j, 1)
}
}
// 空白行があったら削除して original2 へ格納 ///////////
var original2 = original.filter(v => v[0])
// 貼り付け
activespreadsheet.getRange(1, 10, original2.length, original2[0].length).setValues(original2)
}
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
スプレッドの出席名簿を参加者のみピックアップ→アイウエオ順に並び替えて貼り付けを、二次元配列で処理するスクリプトです
コードで指定したい範囲は仮なので書き換えてください
最初と最後の、配列の格納と貼り付けは下記で説明しています↓
スプレッドは断然、二次元配列を使ったほうがいいです
セル一つ一つの情報を逐一グーグル先生に聞いて処理するので、
セルの数が多いほど時間がかかります
ローカルで動かすエクセルVBAとは速度が天と地の差です
そのかわり二次元配列のコードの解読はわかりやすい方なので、
これぐらいはクリアしないと他の言語は厳しいと思います