Je cherche un moyen d'importer le tableau à partir de cette formule une fois par jour à une heure donnée au lieu de le mettre à jour automatiquement, comme les formules semblent le faire. Je dois le faire pour suivre chaque jour certains mouvements du marché.
=IMPORTHTML("http://www.cmegroup.com/trading/agricultural/grain-and-oilseed/corn.html","table",1)
Je garderais importhtml
dans une feuille et utiliserais une autre pour le journal historique. En dessous de ceux-ci sont Sheet1 et Sheet2.
function dailyLog() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var currentSheet = ss.getSheetByName('Sheet1');
var logSheet = ss.getSheetByName('Sheet2');
var lastRow = logSheet.getLastRow();
logSheet.getRange(lastRow + 1, 1).setValue(new Date()); // insert timestamp
var range = currentSheet.getDataRange();
range.copyTo(logSheet.getRange(lastRow + 2, 1), {contentsOnly: true});
}
Ce script doit être configuré pour une exécution quotidienne (dans Script Editor, accédez à Ressources> Déclencheurs de ce projet et créez-en un pour chaque jour).
Le script copie la plage de données de la feuille Sheet1 à la fin de celle-ci dans la feuille Sheet2, en conservant uniquement le contenu (équivalent de l'action manuelle Ctrl-Maj-V).
Commencez par encapsuler votre commande importhtml()
dans array_constrain(..., 2, 99)
afin que seules deux lignes de la table soient présentes dans la feuille: les en-têtes et la première ligne de données.
Planifiez ensuite la fonction suivante pour qu'elle s'exécute quotidiennement. Il prend la deuxième ligne de la feuille et la copie ci-dessous, dans la même feuille.
function dailyLog() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Sheet1');
var lastRow = sheet.getLastRow();
var lastColumn = sheet.getLastColumn();
var range = sheet.getRange(2, 1, 1, lastColumn);
range.copyTo(sheet.getRange(lastRow+1, 1), {contentsOnly: true});
}