GASで、既存のスプレッドシートのタグをコピーしたいのですが、
(開いているスプレッドシートとは別)
GASに『getSheetByID』というものが無いので、下記コードのように
『getSheetByName』を書いておりますものの、非常に不格好です。
何か、スマートな書き方はありますでしょうか?
GAS
1 var inputday = Utilities.formatDate(new Date(), "JST", "yyyyMMddHHmmss"); 2 3 var newest_Link = sheet.getRange(row, column); 4 var formula = newest_Link.getFormula(); 5 6// =HYPERLINK("https://docs.google.com/spreadsheets/d/シートID/edit?pli=1#gid=タグID,"表示名") 7// として、セルに書かれている 8 9 var sheet_ID = formula.substring(formula.indexOf("/d/") + 3,formula.indexOf("edit") - 1); 10 var tag_ID = formula.substring(formula.indexOf("gid=") + 4,formula.indexOf(",") - 1); 11 12 var ss_newest = SpreadsheetApp.openById(sheet_ID); 13 14 var sheets = ss_newest.getSheets(); 15 var spreadsheetID = ss_newest.getId(); 16 17 for(var i=0; i<sheets.length; i++) { 18 19 var sheetId = sheets[i].getSheetId(); 20 var sheetName = sheets[i].getSheetName(); 21 22 if ( tag_ID == sheetId ) { 23 var tag_Name = sheetName; 24 } 25 26 } 27 28 var ss_sheet_newest = ss_newest.getSheetByName(tag_Name); 29 var ss_sheet_copy_newest = ss_sheet_newest.copyTo(ss_newest); 30 ss_sheet_copy_newest.setName(inputday); 31
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/02 07:40