2015-03-26 2 views
0

У меня около 50 листов в моей электронной таблице Google, и вы хотите вернуть разные значения из разных листов. Тем не менее, я не чувствую себя в безопасности, используя имена листов в качестве ключа, используя getSheetByName, поскольку их легко изменить. Мне было интересно, есть ли способ использовать gid-ID, который я вижу для каждой таблицы, как ключ? Или что-то другое?Скрипт Google apps - выбор листа по ключу, а не gettsheetbyname

Ниже то, что я использую сейчас:

var ssValve = SpreadsheetApp.openById('Key').getSheetByName("SheetName") 

ответ

1

Там нет нативного метода, но вы можете построить функции для этого:

function getSheetById(masterSheet, sheetId) { 
    var ss = SpreadsheetApp.openById(masterSheet); 
    var sheet = ss.getSheets(); 

    for(i in sheet) 
    if(sheetId == sheet[i].getSheetId()) 
     return sheet[i]; 

    return -1; 
} 
+0

Это выглядит многообещающе, я проверю его после работы сегодня! –

+0

Работает как очарование! Спасибо! :) Я бы проголосовал за тебя, но, к сожалению, у меня недостаточно репутации! –

+0

Без проблем, рад, что я мог бы помочь. – Kriggs

0

Вы можете использовать getSheetId().

var ssValve = SpreadsheetApp.openById('Key').getSheets()[0] 

Изменение [0] к [1] [2] [3] и так on..for происходит от sheet1 до 2, 3, 4 и так далее

Больше информации here

+0

Это дает результат, на который я надеюсь, но дает вопрос, что просто перемещение порядка листов дает неправильный результат. Я надеялся на что-то более постоянное. Вот почему я предложил gid-ID. Кстати, спасибо за предложение. Я стараюсь проголосовать за вас, но моя репутация низкая :) –

0

ДА! Гид - неизменный уникальный идентификатор для отдельных листов в книге.

Удивительно, что вы не можете использовать сценарий с базовым идентификатором, как GetSheetByID(). Я буду использовать ваш код в своих листах.

Предлагаем переименовать переменную mastersheet в нечто более стандартное, например, "spreadsheetKey" или "workbookKey".

Смежные вопросы