<aside> <img src="/icons/drafts_lightgray.svg" alt="/icons/drafts_lightgray.svg" width="40px" />

目次

<aside> 🆗

公開中

</aside>

<aside> 🚧

工事中

</aside>

</aside>

<aside>

✏スプレッドシート一括削除

キャラクターシートが増えてくると、シートを一枚一枚削除するのは大変なので、一括で削除したい。そのためのGASです。

配布されているシートの初期構成

スプレッドシート構成

スプレッドシート構成

<aside>

ソースコード全体

//削除したくないシート
const defnotDelSheet = ["※コンバートシート","※CSテンプレート","※変換先(デフォルト)","※変換先(グリーン)","※変換先(ダーク)","(CS例1)","(CS例2)","▼INDEX","▼INDEX(ダーク)"];
const addnotDelSheet = ["削除したくないシート"];
const notDelSheet = defnotDelSheet + addnotDelSheet;

function deleteCS(){
  //スプレッドシートにある全てのシートを配列として取得
  let sheetData = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  let delsheet = SpreadsheetApp.getActiveSpreadsheet();

  //forループでシートを削除する
  for(var i=0;i<sheetData.length;i++){
    //削除対象から除外するシートにヒットした場合は、削除処理は行わず、フラグを立てる
    if(notDelSheet.indexOf(sheetData[i].getSheetName()) != -1){
      flag = 1;
    }
    //削除除外シートではない場合は、削除処理を実行する
    else{
      delsheet.deleteSheet(sheetData[i]);
    }
  }
}

</aside>

<aside>

変更する部分

defnotDelSheetでは配布時の初期シート名を記載しています。 ”xxx”:xxxをシート名に合わせて適宜変更してください。

//削除したくないシート
const defnotDelSheet = ["※コンバートシート","※CSテンプレート","※変換先(デフォルト)","※変換先(グリーン)","※変換先(ダーク)","(CS例1)","(CS例2)","▼INDEX","▼INDEX(ダーク)"];
const addnotDelSheet = ["削除したくないシート"];
const notDelSheet = defnotDelSheet + addnotDelSheet;

新しく『DelSheet.gs』とでも名前を付けて保存し、実行してください。

削除しないシートをスプレッドシートで定義してもいいんですが、面倒なので今のところはしていません。

<aside>

参考URL

https://auto-worker.com/blog/?p=1329

削除シートにフラグたててますが、何も処理してないので特に意味はないです。

</aside>

</aside>

</aside>

<aside>

🆙CS複数更新

キャラクターシートが増えてくると、シートを一枚一枚更新するのは大変なので、一括で複数更新したい。そのためのGASです。

<aside> ⚠️

処理するCSが多いとスプレッドシートの処理時間制限を超えるため注意してください。その際はIDリストに記載する量を減らし、分割して実行してください。

</aside>

準備  シートを追加し、キャラクターシートのIDを記載する。  シート名は「IDリスト」としていますが、ソースコードで指定する名前と一致していばOK。  ソースコードで指定しているので、A列に記載してください。

シート追加例

シート追加例

ソースコード全体

// CSのIDを記載したシート名
const csIDsheet = "IDリスト";

function CSupdate() {
  let activesheet = SpreadsheetApp.getActiveSpreadsheet();
  // SpreadCS.gs定義用
  sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();

  // シート名を指定してシート取得
  let s1 = activesheet.getSheetByName(csIDsheet);
  // シートのデータを配列で取得
  let list2D = s1.getRange(1,1,s1.getLastRow()).getValues();
  let list1D = list2D.flat();
  console.log(list1D);

  while(list1D.length>0){
    let csID = list1D.shift();
    console.log("ID:"+csID+" start");
    if(Number.isInteger(csID)){
      converter(csID);
      console.log("ID:"+csID+" complete");
      }
    }
  // メッセージ
  Browser.msgBox("コンバートが完了しました。"); 
}

変更する部分

”xxx”:xxxをシート名に合わせて適宜変更してください。

// CSのIDを記載したシート名
const csIDsheet = "IDリスト";

新しく『CSupdate.gs』とでも名前を付けて保存し、実行してください。

</aside>

<aside> 🚧

🔀CSソート

</aside>

参考URL  https://qiita.com/HiroIwasaki/items/2f84215e22adc4125b5d

<aside> 🚧

♾️CS一括更新

</aside>

<aside> 🆕