GoogleSpreadSheetのお勉強 シートの複製やシートのURL一括取得
お勉強備忘録
①シートの複製
//シート複製
function dupSheetCustom(sourceSheetName,newName){
//開いているスプレッドシートを選択
var ss = SpreadsheetApp.getActiveSpreadsheet();
//指定したシートをアクティブ化
sourceSheet = ss.getSheetByName(sourceSheetName)
ss.setActiveSheet(sourceSheet)
//アクティブなシートを複製してリネーム
ss.duplicateActiveSheet().setName(newName);
//複製したシートを選択
var sheet = SpreadsheetApp.getActiveSheet();
//セルに値に入力
sheet.getRange(2,1).setValue(newName) ;
strformula = "=sheetname";
Utilities.sleep(100);
}
②シートの削除
//シート削除
function delSheetCustom(sheetname){
// 現在アクティブなスプレッドシートを取得
var ss = SpreadsheetApp.getActive();
// そのスプレッドシートにある シート名:テスト用シート のシートを取得
var sheet = ss.getSheetByName(sheetname);
// そのシートを削除
ss.deleteSheet(sheet);
}
③シートのURL取得と、セルの値参照式の作成
//シートのリンク取得
function genSheetUrl(sheetname){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ss_name = ss.getName(); //開いているスプレッドシート名を取得
var sh_name = sheetname; //シート名
var ss_url = ss.getUrl(); //スプレッドシートのURLを取得
var sh_id = ss.getSheetByName(sheetname).getSheetId(); //指定したシートのIDを取得
var sh_url = ss_url + "#gid=" + sh_id; //シートのURLを指定するために、スプレッドシートのURLとシートIDを"#gid="でくっつけます。
var urlSet = [sheetname , sh_url]; //シート名、シートURL のペアを作る
return urlSet;
}
◆①~③のバッチ化
④ソースシート名と、複製後のシート名(複数)を指定して、複製の一括処理
⑤シート名(複数)を指定して、削除の一括処理
⑥シート名(複数)を指定して、URL取得とセルの値参照式作成して、指定したシートに記録
//シートのリンク一括取得
function genSheetUrlBatch(){
var nameList = ["mySheet1", "mySheet2", "mySheet3"];
urlSheetName = "_urlList";
//繰り返し処理
var urlSet = [];
for(var i=0; i<nameList.length; i++){
urlSet = genSheetUrl(nameList[i]);
latestFunc = "=IMPORTRANGE("+"\""+urlSet[1]+"\",\""+urlSet[0]+"!$B$1:$C$1\")" ;
SpreadsheetApp.getActive().getSheetByName(urlSheetName).getRange(i+2,1).setValue(urlSet[0]); //シート名を
SpreadsheetApp.getActive().getSheetByName(urlSheetName).getRange(i+2,2).setValue(urlSet[1]); //URLを記入
SpreadsheetApp.getActive().getSheetByName(urlSheetName).getRange(i+2,3).setValue(latestFunc); //最新バージョンを取得する関数
SpreadsheetApp.getActive().getSheetByName(urlSheetName).getRange(1,1).setValue("Sheet Name");//一行目情報
SpreadsheetApp.getActive().getSheetByName(urlSheetName).getRange(1,2).setValue("Sheet URL");
SpreadsheetApp.getActive().getSheetByName(urlSheetName).getRange(1,3).setValue("Latest Info");
}
}