Как получить имя текущего листа в Таблицах Google

Формулы в Таблицах Гугл могут многое, но не все. Например, как вернуть имя текущего листа или его порядковый номер, а его gid? Чтобы узнать имя текущего листа, надо сделать так:
Чтобы заполучить себе в Таблицу подобную формулу, достаточно повторить несколько шагов.

Шаг 1 "Редактор скриптов"

В текущей Таблице необходимо перейти в редактор скриптов.
Главное меню - Инструменты - Редактор скриптов

Шаг 2 "Ввод кода"

В открывшемся проекте задать его имя и ввести код:
  
    function shinfo(){
      return SpreadsheetApp.getActiveSheet().getName();
    }
  

Шаг 3. Необходимо сохранить проект, закрыть его и перейти к Таблице.

ОК. Теперь перейдите в Таблицу и введите формулу =shinfo()

Получаем порядковый норме листа и его gid

Индекс листа

Чтобы вернуть порядковый номер листа (другими словами - индекс), можно использовать следующую функцию:
  
    function shindex(){
      return SpreadsheetApp.getActiveSheet().getIndex();
    }
  
Формула в Таблице =shindex()

Идентификатор листа

Чтобы вернуть gid листа (это его идентификатор, который можно использовать для ссылки на лист), можно использовать следующую функцию:
  
    function shid(){
      return SpreadsheetApp.getActiveSheet().getSheetId();
    }
  
Формула в Таблице =shid()

Интересный факт

Когда-то такой возможности не существовало, т.к. пользовательские функции всегда ссылаллись на первый лист Таблицы. См. https://issuetracker.google.com/issues/36760840

Комментарии

  1. Спасибо тебе огромное, добрый человек, за понятный и полезный ответ!!! Сразу сделал себе и сейчас доволен. Вот так бы все и всегда отвечали :)
    Ещё раз спасибо!!

    ОтветитьУдалить
  2. Здравствуйте все.
    Александр, а может случаем знаете код для того чтобы в ячейку выводилось не имя а порядковый номер листа? Нужна такая функция, но пока слаб в JS и не могу сообразить как это описать. Понимаю интуитивно, что нужно оттолкнуться от имени листа, но как на этой основе выяснить порядковый номер листа в книге?!?
    Если ещё заходите сюда, может подскажите или мысли какие есть по этому поводу?
    Спасибо!

    ОтветитьУдалить
    Ответы
    1. Попробуйте такую функцию

      function GET_SHEET_INDEX() {
      return SpreadsheetApp.getActiveSheet().getIndex();
      }

      Удалить
  3. Немного обновлен пост, добавлены примеры.

    ОтветитьУдалить
  4. Как сделать так чтобы в таблице появлялось имя открывшего его человека? Есть ли такой макрос?

    ОтветитьУдалить
    Ответы
    1. Если этот пользователь установит для себя триггер, например, на открытие Таблицы, то он сможет поделиться этой информацией с другими. Т.о. пользователь преде должен установить такой макрос.

      Удалить
  5. День добрый! Подскажите , а как наоборот сделать, чтоб при создание нового листа он брал название из ячейки другого листа ? А то при записи макроса , у меня копирует текст в ячейке , переименовывает лист , но в дальнейшем при использование макроса , если ввести иной текст в ячейку , новый лист всё равно пытается переименовываться в изначальный текст , который был при записи макроса. Спасибо!

    ОтветитьУдалить
    Ответы
    1. Добрый день. Пришлите пример своей Таблицы сюда https://groups.google.com/g/contributorpw

      Удалить
  6. Эта формула автоматически не обновляется? Или она у меня не правильно работает?

    ОтветитьУдалить
    Ответы
    1. Вам нужно вызвать эту формулу с параметром, который ссылается на обновляемый диапазон, например, на этот же лист =shinfo('Sheet1'!A:A)

      Удалить
  7. А как сделать, что бы вставлялось имя документа, а не имя листа?

    ОтветитьУдалить
    Ответы
    1. Самое простое

      function sinfo(){
      return SpreadsheetApp.getActive().getName();
      }

      Удалить
    2. Спасибо огромное за статью! Вопрос:
      А как вставить в ячейку название файла "В-0000 от 01.01.2023", но чтобы отображалось только "В-0000"??
      Может можно задать условие? Возможные варианты:
      1. До первого пробела
      2. Первые 6 знаков
      Либо еще как то...лишь бы работало))

      Удалить
    3. Вопрос не понятен. Это просто имя файла или вам нужно вставить сниппет? Попробуйте задать вопрос тут https://t.me/google_sheets_pro

      Удалить

Отправить комментарий

Спасибо за ваше сообщение. Оно может быть не опубликовано сразу из-за того, что попало на предмодерацию. Дождитесь публикации сообщения. Спасибо за понимание.

Thank you for your message. It may not be published immediately due to the fact that it got to pre-moderation. Wait for the message to be published. Thank you for understanding.

Не нашли ответ? Пишите!

Имя

Электронная почта *

Сообщение *