我知道這是晚了,可能不會對原始請求者有用。但是我在研究功能時看到了這個問題,但最終我自己解決了這個問題。您可以通過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
這不是我正在尋找的答案,但我認爲我必須去處理:/ – user1666847