Différence de comportement pour 2 scripts identiques
Bonjour à toutes et à tous,
Je suis en train de m'arracher les cheveux face à un problème assez embêtant concernant un script :
J'ai plusieurs document qui possèdent les même script et qui sont identiques en terme de présentation mais sur un des documents j'obtient un résultat suite au script qui est incompréhensible.
C'est un script qui est censé copier puis coller les valeurs de certaines cellules.
Sur un document où le script fonctionne bien, j'ai bien les valeurs qui sont collées, tandis que dans l'autre cas les cases se vident.
Identiquement, un script pour "enregistrer" des saisies enregistrement tout correctement dans un cas et dans l'autre ce sont des valeurs sorties de nul part qui sont enregistrées....
Voici le script de la feuille qui fonctionne :
function modifier_modif_planning() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('A7:P7').activate();
spreadsheet.getRange('B9:O10').activate();
spreadsheet.getRange('B9:O10').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('B12').activate();
spreadsheet.getRange('B12').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('D12').activate();
spreadsheet.getRange('D12').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('F12').activate();
spreadsheet.getRange('F12').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('H12').activate();
spreadsheet.getRange('H12').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('J12').activate();
spreadsheet.getRange('J12').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('L12').activate();
spreadsheet.getRange('L12').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('N12').activate();
spreadsheet.getRange('N12').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('B9:O10').activate();
spreadsheet.getActiveRangeList().setNumberFormat('[hh]":"mm');
spreadsheet.getRange('A7:P7').activate();
};avec les données avant script :
Puis les données après script :
Et de l'autre côté j'ai ce script identique
function modifier_modif_planning() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('A7:P7').activate();
spreadsheet.getRange('B9:O10').activate();
spreadsheet.getRange('B9:O10').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('B12').activate();
spreadsheet.getRange('B12').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('D12').activate();
spreadsheet.getRange('D12').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('F12').activate();
spreadsheet.getRange('F12').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('H12').activate();
spreadsheet.getRange('H12').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('J12').activate();
spreadsheet.getRange('J12').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('L12').activate();
spreadsheet.getRange('L12').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('N12').activate();
spreadsheet.getRange('N12').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('B9:O10').activate();
spreadsheet.getActiveRangeList().setNumberFormat('[hh]":"mm');
spreadsheet.getRange('A7:P7').activate();
};Avec les données avant le script :
Puis les données inexplicables après le script :
Je n'arrive absolument pas à comprendre pourquoi ça ne colle pas tout simplement les valeurs c'est un script très simple....
Si quelqu'un a une idée ou peut m'aider ça sauverait mes nerfs !
N'hésitez pas s'il vous faut d'autres éléments et merci à ceux qui porterons du temps à me lire
Bonjour,
Succinctement ce qui pourrais causer ce problème : les plages sont différentes
> Si les plages sont différentes, alors les données copiées sont des cellules vide et donc, tu copies du vide sur des cellules.
Afin de s'en assurer, dans ton premier script, ajoute après une ligne qui est bien copiée un log, qui va permettre de "lire" ce que fais ton script, par exemple, après la ligne
spreadsheet.getRange('B9:O10').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);ajoute ceci :
console.log(spreadsheet.getRange('B9:O10').getDisplayValues())Exécute ton script, à partir de la console Google Apps script afin de voir le log dans la console, ex :
Là normalement tu devrait avoir tes données d'affichées en bas. (dans mon exemple ci dessus "ceci est un log")
Si c'est bien le cas, reproduit ceci sur ton script qui ne fonctionne pas et vois si le log est bon ou pas, ensuite :
> le log n'affiche rien : c'est la lecture de données qui est à revoir
> le log affiche les données : c'est l'écriture de données qui est à revoir
Bonjour,
Déjà je pense que tu devrais stocker tes ranges dans un tableau et juste faire un boucle à partir de ton tableau plutôt que de réécrire à chaque fois la même chose.
Quelque chose comme ça :
Juste, comme tu as l'air de vouloir copier toutes tes cellules, je ne comprends pas pourquoi tu ne prends pas une range globale (qui va de la case violette "modifier le planing" jusqu'à la case en bas à droite "modif : à param".
Bonjour @Anton, je pense, vu le format du script que c'est une macro enregistré, ce pourquoi ça "manque de logique"