Wyświetl nazwę arkusza w arkuszach kalkulacyjnych Google

39

Czy istnieje sposób wyświetlania nazwy arkusza jako wyniku funkcji w Arkuszach kalkulacyjnych Google (dokładnie tak jak to pytanie , z wyjątkiem Arkuszy Google)?

oldrobotsneverrust
źródło
Proszę zobaczyć moją odpowiedź na to pytanie na stackoverflow: stackoverflow.com/a/53409439/279326
Nicolas Janel

Odpowiedzi:

11

Ktoś napisał skrypt, aby to zrobić. Jest ona dostępna w Narzędzia > galerii Script ... . Wyszukaj „nazwę arkusza” i zainstaluj skrypt, a następnie użyj go =getCurrentSheetName().

William Jackson
źródło
9
Jak uzyskać dostęp do tego skryptu w „nowych” Arkuszach Google (które teraz korzystają ze sklepu z dodatkami)?
Benjamin
4
To już nie działa. Użyj odpowiedzi z @ user93341. Przeszedłem przez cały proces, aby opublikować jego funkcję w sklepie z dodatkami. W ostatnim kroku chcieli oni zweryfikować moje konto za 5 USD, a ja ograniczę się do opublikowania 20 elementów. Le westchnienie.
Bruno Bronosky,
49

Przejdź do NarzędziaEdytor skryptów i dodaj ten kod:

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

W komórce, do której chcesz dodać nazwę arkusza:

=sheetName()

Wystąpił problem z dostępem do nazw arkuszy za pomocą funkcji API pokazanych poniżej - w których zwracał tylko nazwę pierwszego arkusza. Zostało to naprawione w marcu 2015 r .

użytkownik12345
źródło
Czy możesz rozwinąć swoją odpowiedź dla tych z nas, którzy nie znają narzędzia skryptowego?
codingbadger
1
@ Barry 1) Wybierz Narzędzia-> Edytor skryptów 2) W wynikowym pliku tekstowym dodaj tę funkcję na końcu 3) Kliknij Zapisz 4) Teraz możesz użyć tej funkcji w arkuszu.
gamliela
5
Chociaż ta funkcja działa dobrze, nie aktualizuje się, gdy zmienia się nazwa arkusza, więc nie jest tak naprawdę przydatna.
jesjimher
1
@jesjimher zgodnie z Forum pomocy Dokumentów Google , jeśli ktoś przejdzie do edytora skryptów i ponownie zapisze skrypt, wracając do arkusza, zobaczy, że nazwy kart zostały poprawnie zaktualizowane.
aribeiro,
1
Wiem, ale jest to mylące i całkowicie przeciwne do tego, jak działają formuły arkuszy. Oczekuję, że formuła zostanie zaktualizowana za każdym razem, gdy zmienią się dane referencyjne. Teraz ta formuła tego nie robi, chyba że otworzę i zapisz skrypt źródłowy. Mógłbym po prostu ręcznie wprowadzić nazwę arkusza za każdym razem, oszczędzając kłopotów.
jesjimher
6

Oto fragment kodu funkcji niestandardowej, aby uzyskać nazwę arkusza kalkulacyjnego według jego identyfikatora .

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

W komórce podaj identyfikator arkusza (poszukaj identyfikatora w adresie URL arkusza kalkulacyjnego).

=GetSpreadsheetNameById('49nvkwOE-203nXDLGGJtg0htFKK020dsd939AAPZU')
JamesThomasMoon1979
źródło
1
To tylko niewielka zmiana w odpowiedzi na @ user93341 powyżej.
JamesThomasMoon1979
Daje to następujący błąd: „Nie masz uprawnień do wywoływania SpreadsheetApp.openById.”
Aurovrata
Zwraca to nazwę dokumentu zamiast nazwy arkusza, zamień return ss.getName();na return ss.getActiveSheet().getName();jeśli chcesz nazwę arkusza (tak naprawdę potrzebowałem nazwy dokumentu, więc dzięki)
Emilien
-1

Spróbuj tego:

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

Wklej go w Narzędzia> Edytor skryptów i wywołaj funkcję z komórki takiej jak ta:

=getNameOfThisSheet(NOW())

NOW(), Były GoogleClock()parametr pomaga uniknąć problemów z memoization.

GlobeCore.com
źródło
GOOGLECLOCK () został zastąpiony przez NOW () z drugiej strony niedeterministyczne funkcje nie mogą być użyte jako argumenty funkcji niestandardowych.
Rubén