web-dev-qa-db-fra.com

Est-il possible d'importer des numéros d'une autre feuille toutes les x heures?

Je veux lier deux feuilles de calcul avec IMPORTRANGE, disons A avec B. B est la source. Je veux que A importe les numéros de B toutes les 6 heures, parce que les numéros de B sont en constante évolution et que la feuille est vraiment grosse, cela ralentirait la feuille A.

Y-a-t-il un moyen de faire ça?

2
jason

La fonction IMPORTRANGE ne semble pas mettre en cache ses résultats. Elle sera donc actualisée chaque fois que la feuille de calcul source sera modifiée.

Mais nous pouvons contourner cela en écrivant notre propre fonction:

function customImportRange(spreadsheetUrl, rangeStr, timestamp) {
  var sheet = SpreadsheetApp.openByUrl(spreadsheetUrl);
  var range = sheet.getRange(rangeStr);
  return range.getValues();
}

Installez cette fonction en cliquant sur Outils → Editeur, collez le code et cliquez sur le bouton Exécuter. Cela ouvrira une boîte de dialogue vous demandant de donner au script la permission de s’exécuter.

Le script fait exactement la même chose que IMPORTRANGE, mais, étant une fonction Google Apps Scripts, Google Spreadsheets mettra en cache ses résultats et not ​​récupérera les nouvelles données aussi longtemps que les paramètres de la fonction sont inchangés.

Cela signifie que nous pouvons modifier le paramètre timestamp toutes les 6 heures pour déclencher une récupération, ce qui signifie une nouvelle fois que nous avons besoin d'une formule qui génère une nouvelle valeur toutes les 6 heures.

Étant donné que nous avons mis =NOW() dans la cellule B1, et la formule suivante dans la cellule C1:

=DATEVALUE(B1) * 10 + ROUNDUP(HOUR(B1) / 6)

La cellule C1 affiche maintenant un nombre qui change toutes les 6 heures, ce qui signifie que nous pouvons l'utiliser comme entrée de notre fonction. Mettez ce qui suit dans la cellule A2:

=customImportRange("https://docs.google.com/spreadsheets/d/1qFryUlGfGT8dp_lx9sSE_7suCV0t8cAg9btM1AOPnSI/edit#gid=0", "'Custom function'!A4:F6", C1)

Les paramètres sont:

  1. L'URL complète de la feuille de calcul source
  2. La notation de plage pour les données que vous voulez récupérer
  3. La clé de cache

J'ai mis en place n exemple de feuille de calcul pour le démontrer, n'hésitez pas à le copier pour votre propre expérimentation.

Pour que la feuille de calcul se mette à jour également lorsqu'elle n'est pas ouverte dans un navigateur, vous devez aller à Fichier → Paramètres de la feuille de calcul et définir Recalcul à À changer et toutes les heures.

1
Vidar S. Ramdal