2017-05-08 1 views
0

J'ai une feuille google avec un script attaché. Il existe une fonction onOpen() qui crée un menu dans l'interface utilisateur, qui est une liste de colonnes pouvant être triées. Les fonctions de tri individuelles, appelées en sélectionnant un élément de menu, sont des variantes (avec différentes colonnes triées) du script ci-dessous.#ERROR! se produit, mais disparaît en cliquant sur la cellule et en appuyant sur retour

Le problème: sur la feuille, la fonction renvoie "#ERROR!" et en cliquant sur la cellule contenant la fonction, et en appuyant simplement sur Entrée, la cellule se répète magiquement et affiche la plage correcte entièrement comme il se doit.

Je ne sais pas s'il y a un problème avec la formule, ou avec le script. Les idées actuelles sur ce qui pourrait être le problème sont: Quelque chose à voir avec le fait que la formule fait référence à une autre feuille. Des idées sur où commencer ou pourquoi l'erreur initiale (qui ne semble pas rester après avoir recalculé la cellule) se produit?

function sortJoindate() { 
var sortvar = "Join Date"; 
var sheet = SpreadsheetApp.getActiveSheet(); 
var currentSort = sheet.getRange("A2").getValue(); 
var pmdata = sheet.getRange("A3"); 

if (currentSort == "SORTED BY " + sortvar + " ASC") { 

sheet.getRange("A2").setValue("SORTED BY Join Date DESC"); 
pmdata.setValue("=QUERY(MemberData!A:J,\"select A,D,E,F,C,H,B where J = '\" & A1 & \"' order by A DESC \""); 

} else { 

sheet.getRange("A2").setValue("SORTED BY " + sortvar + " ASC"); 
pmdata.setValue("=QUERY(MemberData!A:J,\"select A,D,E,F,C,H,B where J = '\" & A1 & \"' order by A ASC \""); 

} 
SpreadsheetApp.flush(); 
} 

After running script, BEFORE pressing enter on cell After running script, AFTER pressing enter on cell

Répondre

0

trouvé le problème, les feuilles de Google dans toute sa sagesse et serviabilité corrigeait mon erreur d'analyse quand je pressais entrer, et je ne cherchais pas assez bien la différence entre ce que je l'alimentait et ce qu'il corrigeait. J'ai oublié un support à la fin.

INCORRECT:

pmdata.setValue("=QUERY(MemberData!A:J,\"select A,D,E,F,C,H,B where J = '\" & A1 & \"' order by A DESC \""); 

CORRECT:

pmdata.setValue("=QUERY(MemberData!A:J,\"select A,D,E,F,C,H,B where J = '\" & A1 & \"' order by A DESC \")"); 
différence

est le support 4 caractères de la fin ... content d'avoir fini par trouver. Vérifiez vos parenthèses ppl.