Отображение названия листа в Google Spreadsheets

39

Есть ли способ отобразить имя листа в результате выполнения функции в таблицах Google (точно так же, как этот вопрос , кроме в Google Sheets)?

oldrobotsneverrust
источник
Пожалуйста, смотрите мой ответ на этот вопрос о stackoverflow: stackoverflow.com/a/53409439/279326
Николас Джанел

Ответы:

11

Кто-то написал сценарий для этого. Она доступна в Tools > галерея Script ... . Найдите «имя листа» и установите скрипт, затем используйте его с =getCurrentSheetName().

Уильям Джексон
источник
9
Как получить доступ к этому сценарию в «новых» Google Sheets (который теперь использует дополнительный магазин)?
Бенджамин
4
Это больше не работает. Используйте ответ от @ user93341. Я прошел весь процесс, чтобы опубликовать его функцию в магазине надстроек, и на последнем шаге они хотели 5 долларов для проверки моей учетной записи, и я бы ограничился публикацией 20 товаров. Ле вздох
Бруно Броноски
49

Перейдите в ИнструментыРедактор скриптов и добавьте этот код:

function sheetName() {
  return SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName();
}

В ячейку, где вы хотите добавить имя листа:

=sheetName()

Возникла проблема с доступом к именам листов с помощью функций API, показанных ниже - когда он возвращал только имя первого листа. Это было исправлено в марте 2015 года .

user12345
источник
Не могли бы вы расширить свой ответ для тех из нас, кто не знаком со скриптовым инструментом?
codingbadger
1
@ Барри 1) Выберите Инструменты-> Редактор скриптов. 2) В полученный текстовый файл добавьте эту функцию в конце. 3) Нажмите Сохранить. 4) Теперь вы можете использовать эту функцию на своем листе.
Гамлиела
5
Хотя эта функция работает нормально, она не обновляется при изменении имени листа, поэтому на самом деле она бесполезна.
jesjimher
1
@jesjimher, согласно этому справочному форуму Google Docs , если вы зайдете в редактор сценариев и заново сохраните сценарий, вернувшись к листу, вы увидите, что названия вкладок были правильно обновлены.
Aribeiro
1
Я знаю, но это сбивает с толку и полностью противоположно тому, как работают формулы листа. Я ожидаю, что формула будет обновляться при изменении данных, на которые она ссылается. Теперь эта формула не сделает этого, пока я не открою и не сохраню исходный скрипт. Я мог бы просто ввести название листа вручную каждый раз, избавляя от хлопот.
июня
6

Вот фрагмент кода пользовательской функции, чтобы получить имя электронной таблицы по ее идентификатору .

function GetSpreadsheetNameById(id) {
  var ss = SpreadsheetApp.openById(id);
  return ss.getName();
}

В ячейке передайте Идентификатор листа (посмотрите идентификатор URL в электронной таблице).

=GetSpreadsheetNameById('49nvkwOE-203nXDLGGJtg0htFKK020dsd939AAPZU')
JamesThomasMoon1979
источник
1
Это всего лишь небольшое изменение в ответе @ user93341 выше.
JamesThomasMoon1979
Это приводит к следующей ошибке: «У вас нет разрешения на вызов SpreadsheetApp.openById.»
Aurovrata
Это возвращает имя документа вместо имени листа, замените return ss.getName();его, return ss.getActiveSheet().getName();если хотите, чтобы имя листа (мне действительно нужно было имя документа, так что спасибо)
Эмильен
-1

Попробуй это:

function getNameOfThisSheet() {
  return SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName();
}

Вставьте его в Инструменты> Редактор скриптов и вызовите функцию из ячейки следующим образом:

=getNameOfThisSheet(NOW())

NOW(), Бывший GoogleClock()параметр помогает проблем избежать с запоминанием.

GlobeCore.com
источник
GOOGLECLOCK () был заменен на NOW () с другой стороны, недетерминированные функции не могут использоваться в качестве аргументов пользовательских функций.
Рубен