J'utilise une application externe pour saisir des données dans une feuille de calcul Google. Ce classeur est ensuite référencé par un classeur distinct (avec la IMPORTRANGE(spreadsheet_key, range_string)
fonction) qui manipule et interprète les données. Mon problème est que chaque fois que je modifie personnellement le classeur référencé, le classeur de référence se met à jour très bien, mais chaque fois que l'application externe le modifie, il n'est pas mis à jour.
J'ai essayé de modifier les "Paramètres de la feuille de calcul" afin que le recalcul se fasse à chaque minute et à chaque changement. De plus, j'ai également installé une extension dans Google Chrome qui actualise automatiquement la page toutes les heures. Toutefois, les données ne sont pas réimportées à partir du classeur référencé. Même si je copie la formule dans une nouvelle cellule, les données ne sont toujours pas réimportées.
Y a-t-il quelque chose que je puisse faire pour que le classeur de référencement déclenche la réimportation des données par Google Sheets?
Edit: Juste pour être clair, j'ai actuellement un classeur avec des données entrées par une application externe (appelez-le la "feuille source"), et un autre classeur avec une IMPORTRANGE
fonction (appelez-le la "feuille de référence"). Les données affichées par la IMPORTRANGE
fonction dans la "feuille de référence" n'incluent aucune donnée entrée par l'application externe depuis la dernière modification personnelle de la "feuille source". En outre, les deux classeurs utilisent les nouvelles feuilles de calcul Google.
Modifier: En outre, cette question n'est pas la même que Comment lier une cellule de Google Spreadsheets à une cellule d'un autre document? parce que j'utilise la fonction donnée comme solution à cette question pour importer des données à partir d'une feuille de calcul. Le problème n'est pas de savoir comment importer les données, mais plutôt comment mettre à jour la source des données. Mon hypothèse serait que Google se serait occupé de cela pour moi, mais les données de la "feuille de référence" ne sont pas mises à jour, et la seule façon que je puisse trouver pour la mettre à jour est d'aller physiquement dans la "feuille source" "et le modifier moi-même.
la source
separate workbook
correctement. De toutes les apparences, on dirait qu'il vient d'être tapé.Réponses:
J'ai du mal avec le même problème. Au lieu d'écrire une fonction personnalisée, j'ajoute une chaîne de requête différente
spreadsheet_url
dansIMPORTRANGE
dans l'espoir que chaque fois que la page est actualisée, Google pense qu'il a besoin de récupérer les données d'une nouvelle feuille de calcul. J'ajoute simplement un nouvel horodatage pour rendre l'URL unique à chaque fois. C'est un hack flagrant, mais cela a fonctionné pour moi sur beaucoup de feuilles.Ma formule ressemblait auparavant à quelque chose comme:
Et maintenant ça ressemble à:
Mise à jour:
Cette méthode ne fonctionne plus puisque Google n'autorise plus l'
now()
intérieurimportrange()
. Voir le commentaire de Hugh ci-dessous.la source
Ce qui suit vient de Jimmy dans cette réponse Web Apps .
=now()
équation dans une cellule aléatoire, par exempleZ1
=importrange()
fonction qui fait référence à lanow
fonction de l'autre feuille de calcul.J'ai essayé beaucoup d'autres suggestions, notamment en utilisant la
=now()
fonction, l'astuce URL maintenant dans ce fil, ou Apps Script pour insérer du texte aléatoire sur un intervalle défini, mais rien ne forcerait importrange à mettre à jour, sauf une modification manuelle de la feuille source.la source
J'ai trouvé que le moyen le plus simple était de mettre une simple
if
déclaration autour duimportrange
.Cela fonctionne à chaque fois.
la source
=if (Now() > now()-1, IMPORTRANGE(B1,B2),)
La solution de contournement de l'horodatage ne semble pas fonctionner pour moi - il y a une note explicite que l'utilisation des horodatages et des fonctions rand n'est pas autorisée.
Ma solution de contournement très hacky consiste à supprimer la cellule, puis à appuyer sur Ctrl + Z. Il force un rafraîchissement à chaque fois. Il est trivial de créer un script à l'ouverture ou à des intervalles de temps spécifiques pour conserver les données à jour.
la source
J'ai trouvé un hack simple pour simuler une mise à jour manuelle des cellules et lancer des modifications dans une feuille de calcul externe.
A créé une fonction personnalisée comme celle-ci:
Ensuite, sur ma feuille, je l'appelle ainsi:
où
tab!B1
est l'une des cellules que je modifie par code.la source
OU ... vous pouvez faire un script simple, en donnant d'abord la valeur cero (0) puis en incluant la formule et cela fait l'affaire:
la source
J'ai pu trouver un moyen de résoudre mon problème (détaillé ici ) en utilisant un script d'applications avec une fonction personnalisée.
Si vous remplacez
=IMPORTRANGE(spreadsheet_url, range_string)
dans votre feuille de calcul par=DynamicImportRange(spreadsheet_url, sheet_name, range)
et collez le code ci-dessous dans Outils -> Éditeur de script -> Projet vide, cela devrait fonctionner (voir ceci pour plus d'informations sur l'écriture de scripts d'applications).Si vous souhaitez que la feuille soit mise à jour régulièrement, vous pouvez configurer un déclencheur en allant dans Ressources -> Déclencheurs du projet actuel dans la fenêtre Script des applications.
la source
SpreadsheetApp.openById()
ouSpreadsheetApp.openByUrl()
. Vérifiez ici et iciPour contourner le
now()
roadblock, vous pouvez modifier les paramètres de la feuille de calcul pour la mettre à jour toutes les heures.Fichier -> Paramètres de la feuille de calcul -> Calcul
Mettez à jour la feuille pour recalculer elle-même sur " Au changement et toutes les heures " ou "Au changement et toutes les minutes". Gardez à l'esprit que la sélection d'un recalcul toutes les minutes peut bloquer le tableur.
la source
Vous pouvez utiliser le module complémentaire Google Sheets Sheetgo pour mettre à jour automatiquement votre référence à partir d'une autre feuille. Vous pouvez utiliser 30 mises à jour gratuites par mois ou obtenir un abonnement payant pour plus de mises à jour. Cette vidéo devrait vous expliquer l'utilisation de base.
la source