Korzystam z zewnętrznej aplikacji do wprowadzania danych do arkusza kalkulacyjnego Google. Do tego skoroszytu odwołuje się następnie oddzielny skoroszyt (z IMPORTRANGE(spreadsheet_key, range_string)
funkcją), który manipuluje i interpretuje dane. Mój problem polega na tym, że za każdym razem, gdy osobiście modyfikuję skoroszyt, do którego się odwołuje, skoroszyt odwołujący się aktualizuje, ale za każdym razem, gdy modyfikuje go zewnętrzna aplikacja, nie jest aktualizowany.
Próbowałem edytować „Ustawienia arkusza kalkulacyjnego”, aby przeliczanie odbywało się co minutę i przy każdej zmianie. Ponadto zainstalowałem również rozszerzenie w Google Chrome, które co godzinę automatycznie odświeża stronę. Jednak dane nie zostaną ponownie zaimportowane z odwołania do skoroszytu. Nawet jeśli skopiuję formułę do nowej komórki, dane nadal nie zostaną ponownie zaimportowane.
Czy jest coś, co mogę zrobić ze skoroszytem odniesienia, aby zmusić Arkusze Google do ponownego zaimportowania danych?
Edycja: Dla jasności mam obecnie jeden skoroszyt z danymi wprowadzonymi przez zewnętrzną aplikację (nazwij go „arkuszem źródłowym”) i inny skoroszyt z IMPORTRANGE
funkcją (nazwij go „arkuszem referencyjnym”). Dane pokazane przez IMPORTRANGE
funkcję w „arkuszu odniesienia” nie obejmują żadnych danych wprowadzonych przez zewnętrzną aplikację, ponieważ ostatnio osobiście edytowałem „arkusz źródłowy”. Ponadto oba skoroszyty korzystają z nowych Arkuszy Google.
Edycja: To pytanie nie jest takie samo jak Jak połączyć komórkę w Arkuszach kalkulacyjnych Google z komórką w innym dokumencie? ponieważ używam funkcji podanej jako rozwiązanie tego pytania do importowania danych z arkusza kalkulacyjnego. Problemem nie jest sposób importowania danych, ale sposób aktualizacji źródła danych. Zakładam, że Google zająłby się tym za mnie, ale dane w „arkuszu odniesienia” nie są aktualizowane, a jedynym sposobem na znalezienie aktualizacji jest fizyczny dostęp do „arkusza źródłowego” ”i sam go edytuj.
źródło
separate workbook
porządku. Z pozoru wygląda na to, że został właśnie wpisany.Odpowiedzi:
Walczę z tym samym problemem. Zamiast pisać funkcję niestandardową, dodaję inny ciąg kwerendy
spreadsheet_url
wIMPORTRANGE
w nadziei, że za każdym razem, gdy strona jest odświeżana, Google uważa, że musi pobrać dane z nowego arkusza. Po prostu dołączam nowy znacznik czasu, aby URL był niepowtarzalny za każdym razem. To rażący hack, ale działał dla mnie na wielu arkuszach.Moja formuła poprzednio wyglądała mniej więcej tak:
A teraz wygląda to tak:
Aktualizacja:
Ta metoda już nie działa, ponieważ Google nie zezwala już na to w
now()
środkuimportrange()
. Zobacz komentarz Hugh poniżej.źródło
Poniższe informacje pochodzą od Jimmy'ego w tej odpowiedzi na aplikacje internetowe .
=now()
Powiedzmy, że w obu arkuszach kalkulacyjnych wstaw równanie do przypadkowej komórkiZ1
=importrange()
funkcję, która odwołuje się donow
funkcji drugiego arkusza kalkulacyjnego.Wypróbowałem wiele innych sugestii, w tym użycie
=now()
funkcji, teraz trik URL teraz w tym wątku lub Skrypt aplikacji do wstawiania losowego tekstu w ustalonych odstępach czasu, ale nic nie zmusiłoby importrange do aktualizacji oprócz ręcznej edycji arkusza źródłowego.źródło
Odkryłem, że najprostszym sposobem było umieszczenie prostego
if
stwierdzenia wokółimportrange
.Działa to za każdym razem.
źródło
=if (Now() > now()-1, IMPORTRANGE(B1,B2),)
Obejście oznaczenia dat nie wydaje mi się działać - istnieje wyraźna uwaga, że używanie datestamps i funkcji rand jest niedozwolone.
Moim bardzo pospiesznym obejściem jest usunięcie komórki, a następnie naciśnięcie klawiszy Ctrl + Z. Wymusza odświeżenie za każdym razem. Skryptowanie tego pojedynczego pliku lub w określonych odstępach czasu jest trywialne, aby zachować świeżość danych.
źródło
Znalazłem prosty hack do symulacji ręcznej aktualizacji komórki i uruchamiania modyfikacji w zewnętrznym arkuszu kalkulacyjnym.
Utworzono niestandardową funkcję taką jak ta:
Następnie na moim arkuszu nazywam to w ten sposób:
gdzie
tab!B1
jest jedna z komórek, które modyfikuję kodem.źródło
LUB ... możesz zrobić prosty skrypt, najpierw podając wartość cero (0), a następnie włączając formułę z powrotem, a to załatwi sprawę:
źródło
Udało mi się znaleźć sposób na rozwiązanie mojego problemu (szczegółowo tutaj ) za pomocą skryptu aplikacji z niestandardową funkcją.
Jeśli zastąpić
=IMPORTRANGE(spreadsheet_url, range_string)
w arkuszu kalkulacyjnym z=DynamicImportRange(spreadsheet_url, sheet_name, range)
i wklej poniższy kod w Narzędzia -> Script Editor -> pusty projekt, to powinno działać (zobacz to , aby uzyskać więcej informacji na temat pisania skryptów aplikacje).Jeśli chcesz regularnie aktualizować arkusz, możesz ustawić wyzwalacz, przechodząc do opcji Zasoby -> Wyzwalacze bieżącego projektu w oknie Skryptu aplikacji.
źródło
SpreadsheetApp.openById()
lubSpreadsheetApp.openByUrl()
. Sprawdź tutaj i tutajAby obejść tę
now()
blokadę, możesz zmienić ustawienia arkusza kalkulacyjnego, aby aktualizować je co godzinę.Plik -> Ustawienia arkusza kalkulacyjnego -> Obliczenia
Zaktualizuj arkusz, aby przeliczyć się ponownie w „ Po zmianie i co godzinę ” lub „Po zmianie i co minutę”. Pamiętaj jednak, że wybranie opcji przeliczania co minutę może powodować zawieszanie się arkusza kalkulacyjnego.
źródło
Możesz użyć dodatku Arkusze Google Sheetgo, aby automatycznie zaktualizować swoje odniesienie z innego arkusza. Możesz użyć 30 aktualizacji bezpłatnie miesięcznie lub uzyskać płatną subskrypcję, aby uzyskać więcej aktualizacji. Ten film powinien wyjaśnić podstawowe użycie.
źródło