私はこれが遅れていることを知っており、元のリクエスタにはもう役に立たないかもしれません. しかし、機能に取り組んでいるときにこの質問を見ましたが、後で自分で解決することになりました。シートを 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