私はこれが遅れていることを知っており、元のリクエスタにはもう役に立たないかもしれません. しかし、機能に取り組んでいるときにこの質問を見ましたが、後で自分で解決することになりました。シートを gid で検索でき、シートを削除しても変更されないという事実は良いことです....そのように使用する場合。基本的に、すべてのシートを取得し、gid が一致するまでシート名とシート gid をループしてから、名前でシートを呼び出します。
これは、編集時に集計シートから行を取得し、双方向同期の一部としてサブシートにプッシュするために使用するコードの一部です。gid とキーだけが保存されている場合は、私が示した手順をスキップして、それらの値を参照するだけでかまいません。それは非常に速く動作するようです。分割されたシートを使用してワークブックから実行するよりも複雑なスクリプトですが、両方のスクリプトをプッシュするのにほぼ正確に 2 秒かかります。これは私にとっては許容範囲です。
function Stest() 
 {
  SpreadsheetApp.flush();
  var sheet = SpreadsheetApp.getActiveSheet();
  var r = sheet.getActiveRange();
  var lastColumnRow = sheet.getLastColumn(); 
  var activeRow = r.getRow();
  var dataRange = sheet.getRange(activeRow,1,1,lastColumnRow);  
  var data = dataRange.getValues();
   var sskeytemp = data[0][10].split("=")[1]; //the sheet url is in column k
   var sskey = sskeytemp.split("#")[0]; //these first two steps get the sheet key
   var ssid = data[0][10].split("gid=")[1]; //this last step gets the gid
   var wrkbk = SpreadsheetApp.openById(sskey).getSheets(); //this gets the sheets from the workbook
   for (var i = 0 ; i < wrkbk.length ; i++ ) {
     if( ssid == wrkbk[i].getSheetId() ){ //this is to say if the spreadsheet gid, which is the gid of the sheet i know, matches the gid in the workbook from the link, thats the sheet i'm looking for
     var ssname= wrkbk[i].getName();
     var ss = SpreadsheetApp.openById(sskey).getSheetByName(ssname); //give me that sheet by name
    var sslastColumn = ss.getLastColumn();
    var sslastRow = ss.getLastRow();
    var dataRange = ss.getRange(1,1,sslastRow,sslastColumn);  
    var data2 = dataRange.getValues(); //here's your data range, you can proceed freely from here