J'ai créé une feuille de calcul Google composée de plus de 20 feuilles (toutes formatées de la même manière). La société que je travaille pour les conteneurs de charges. Une de ces feuilles calcule un paramètre particulier sur chacune de ces 20+ feuilles (formule countifs
) et me donne une valeur totale du nombre de conteneurs chargés ce jour-là. Par exemple, disons que le 20/11/14, nous avons chargé 5 conteneurs sur la feuille 1, la feuille 2 = 6 conteneurs, la feuille 3 = 7 conteneurs, etc. Il va calculer combien de conteneurs ont été chargés le 11/11/14 et crache un numéro. Jusqu'à cette partie, je vais bien.
Le problème est que ces feuilles doivent être effacées et réutilisées une fois le chargement terminé. Cela signifie que lorsqu'une feuille est traitée et effacée, toute valeur attachée au paramètre mentionné ci-dessus est supprimée. Donc, si ma valeur totale est de 20 conteneurs chargés le 20/11/14 et que je supprime 5 conteneurs sur la feuille 1, ma valeur passe maintenant à 15 conteneurs. Mais en réalité, il était 20.
J'ai essayé de copier et de coller la valeur finale au début du jour suivant, avant le traitement et l'effacement d'une feuille, mais parfois, les choses se désynchronisent lorsqu'une feuille est traitée et effacée avant le début du jour suivant.
Existe-t-il un moyen de définir automatiquement une valeur après "aujourd'hui" et de ne plus être associée à la formule?
Encore une fois, travailler avec Google Spreadsheet. J'aurai besoin d'une aide étape par étape pour implémenter un script si telle est la réponse.
Afin de "geler" la sortie de formule sur une feuille de résumé avec un script, vous pouvez utiliser la méthode copyTo
avec l'option contentsOnly:true
. Cela peut être utilisé pour copier les valeurs dans un autre endroit ou dans exactement les mêmes cellules (écrasant ainsi les formules avec leur sortie). Voici un script simple qui effectue cela pour les cellules A1: A10 de la feuille nommée "SummarySheet".
Pour qu'un tel processus s'exécute périodiquement, vous devez décider quelles cellules doivent être congelées chaque jour. c'est quelque chose de spécifique à une feuille de calcul particulière.
function freezeOutput(){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SummarySheet");
var range = sheet.getRange("A1:A10");
range.copyTo(range, {contentsOnly:true});
}
function RunReplaceInSheet(){
var sheet = SpreadsheetApp.getActiveSheet()
replaceInSheet(sheet,"'§'","");
}
function replaceInSheet(sheet, to_replace, replace_with) {
//get the current data range values as an array
var values = sheet.getDataRange().getValues();
//loop over the rows in the array
for(var row in values){
//use Array.map to execute a replace call on each of the cells in the row.
var replaced_values = values[row].map(function(original_value){
return original_value.toString().replace(to_replace,replace_with);
});
//replace the original row values with the replaced values
values[row] = replaced_values;
}
//write the updated values to the sheet
sheet.getDataRange().setValues(values);
}