首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用gid访问工作表

使用gid访问工作表
EN

Stack Overflow用户
提问于 2012-09-13 04:34:21
回答 5查看 18.9K关注 0票数 9

抱歉,如果我的问题在别的地方得到了答案,我整个下午都在谷歌上寻找答案,但我仍然是一个新手。

我正在尝试使用Google电子表格的脚本来访问不同的电子表格。我拥有的唯一信息是电子表格的URL,其中有键和gid (多表电子表格的某种按时间顺序排列的索引-我只能找到的信息是here)。

工作表URL类似于https://docs.google.com/spreadsheet/ccc?key=abc123#gid=178,它所链接的工作表是电子表格中的第一个工作表。

如何找到处理gid的工作表?

以下代码不起作用,因为它是基于工作表的顺序,而不是它们的创建时间:

代码语言:javascript
复制
var ss = SpreadsheetApp.openById("abc123");

var sheet = ss.getSheets();
Browser.msgBox(sheets[178].getIndex());
EN

回答 5

Stack Overflow用户

发布于 2013-02-20 04:04:21

我会像这样做一些简单的事情:

代码语言:javascript
复制
var refSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SHEET NAME HERE");
var refSheetId = refSheet.getSheetId().toString();

,然后将refSheetId附加到getUrl字符串的末尾

代码语言:javascript
复制
var ssUrl = SpreadsheetApp.getActiveSpreadsheet().getUrl()+"#gid="+refSheetId;

希望这能有所帮助!

票数 7
EN

Stack Overflow用户

发布于 2018-06-06 15:35:27

我是这样做的:

代码语言:javascript
复制
function getSheetByGid(spreadsheet, gid){
    gid = +gid || 0;
    var res_ = undefined;
    var sheets_ = spreadsheet.getSheets();
    for(var i = sheets_.length; i--; ){
        if(sheets_[i].getSheetId() === gid){
            res_ = sheets_[i];
            break;
        }
    }

    return res_;
}

var sheet = SpreadsheetApp.openById("YOUR_SHEET_ID_HERE");
var seetWithGid = getSheetByGid(cpSheet, "YOUR_GID_HERE");
票数 3
EN

Stack Overflow用户

发布于 2012-10-31 03:35:57

我知道这已经很晚了,而且可能对原始请求者不再有用。但我在开发功能时看到了这个问题,但后来我自己解决了这个问题。您可以通过gid查找工作表,删除工作表时它不会更改的事实是一件好事……如果您打算这样使用它的话。基本上,我得到所有的工作表,循环通过工作表名称和工作表gid,直到gid匹配,然后我按名称调用工作表。

这是一些代码的一部分,我用来在编辑时从聚合的工作表中提取一行,并作为双向同步的一部分推送到子表。如果您只存储了gid和key,则可以跳过我展示的步骤,只需引用这些值即可。它似乎工作得非常快,这是一个更复杂的脚本,它是从工作簿中运行的,工作表被打破,但两个脚本几乎都需要2秒来推送,这对我来说是可以接受的。

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12395820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档