Je suis en train de créer une application Google Sheets qui lit la colonne A avec un symbole boursier et place le prix dans la colonne de droite à l'aide de = GOOGLEFINANCE
J'ai ce rafraîchissement tous les jours et en ajoutant à la colonne entre A et B avec son code de date en B1.
À chaque actualisation, les données sont copiées, contrairement aux nouvelles données ajoutées. Il semble que cela ajoute la formule elle-même à la feuille de calcul, par opposition à la valeur elle-même.
Voici mon code
function myFunction() {
SpreadsheetApp.getActiveSheet().insertColumns(2);
SpreadsheetApp.getActiveSheet().getRange('B1').setValue('=now()');
SpreadsheetApp.getActiveSheet().getRange('B2:B10').setValue('=iferror(GOOGLEFINANCE(A2:A10,"price"),"")');
}
À chaque actualisation, les données sont copiées, contrairement aux nouvelles données ajoutées. Il semble que cela ajoute la formule elle-même à la feuille de calcul, par opposition à la valeur elle-même.
Si je comprends bien, vous voulez que les colonnes conservent un "instantané" des prix au moment de l'ajout de la colonne, au lieu que les valeurs continuent à se mettre à jour.
Pour ce faire, nous pouvons remplacer les formules par les valeurs calculées au moment de "geler" les valeurs:
// select the range you want to "freeze":
var range = SpreadsheetApp.getActiveSheet().getRange('B:B');
// replace the cell formulas with the calculated values:
range.setValues(range.getValues());
Je l'ai testé manuellement avec la fonction GOOGLEFINANCE
et elle l'a remplacée par le prix actuel sous forme de valeur numérique. Vous pouvez ajouter ceci à la fin de votre fonction pour "geler" les prix après les avoir obtenus.
Une autre solution pourrait être d'utiliser le paramètre start_date
de la fonction GOOGLEFINANCE
] . Vous pouvez obtenir la date actuelle sous forme de valeur, puis la transférer dans la formule sous le nom de start_date
afin que le prix correspondant soit toujours recherché.