Le passage d'arguments / paramètres de Google feuilles de fonction personnalisée pour la fonction de script
Je suis bloqué sur une chose de base. Comment puis-je passer des arguments à une des Feuilles de calcul Google fonction personnalisée.
J'ai une fonction dans les Apps Script de l'éditeur de code défini comme:
function usageByMonth(range,theDate) {
[ do something with the arguments passed ]
}
Dans mon Google feuille de la fonction est utilisée en tant que
=usageByMonth('Source Meter Readings'!A5:A,B1)
Lorsque vous essayez de déboguer la fonction, je trouve que les deux arguments sont des "undefined". J'ai regardé de nombreux postes et même copié les fonctions directement à partir des exemples avec le même résultat.
Pourriez-vous décrire comment vous avez déterminé que les arguments ne sont pas défini?
Le problème pourrait être votre
J'ai déterminé que les arguments ne sont pas définis en regardant les éléments lorsque vous essayez de déboguer la fonction. Ils affichent comme "undefined". La réponse ci-dessous décrit pourquoi - rendu de débogage des scripts dans l'éditeur, la plupart du temps inutile pour ce lieu commun de développement de scénario, de déterminer les arguments d'entrée et de pouvoir à l'étape grâce à une fonction qui passe les arguments à partir d'une feuille.
Le problème pourrait être votre
theDate
argument. Supprimer cet argument, et d'utiliser seulement les range
argument. Puis faire quelque chose de très simple, comme pour obtenir une valeur hors de la plage, et en le retournant.J'ai déterminé que les arguments ne sont pas définis en regardant les éléments lorsque vous essayez de déboguer la fonction. Ils affichent comme "undefined". La réponse ci-dessous décrit pourquoi - rendu de débogage des scripts dans l'éditeur, la plupart du temps inutile pour ce lieu commun de développement de scénario, de déterminer les arguments d'entrée et de pouvoir à l'étape grâce à une fonction qui passe les arguments à partir d'une feuille.
OriginalL'auteur Neil Lamka | 2016-01-26
Vous devez vous connecter pour publier un commentaire.
L'exécution d'une fonction à partir de l'éditeur de code n'est pas en mesure de récupérer les arguments. Dans cette situation, les arguments seront toujours pas défini. Ceci est également vrai pour les situations comme l'utilisation de la
onEdit()
simple déclencheur. La seule façon vous pouvez obtenir les arguments passés à la fonction, c'est en entrant personnalisé valide la fonction dans la cellule de feuille de calcul.Si vous voulez tester du code pour une fonction personnalisée à partir de l'éditeur de code, vous devez "coder" les valeurs de l'argument.
Aussi,
Logger.log()
ne log rien pour le journal quand une fonction personnalisée est calculée dans la feuille.De commencer avec une simple fonction personnalisée qui fonctionne, et de construire sur ce point.
Si vous souhaitez passer un éventail dans le code de la fonction personnalisée, vous devez comprendre ce qu'est un tableau à deux dimensions est:
Tableau À Deux Dimensions:
Les données à partir d'un ensemble est mis dans un tableau à deux dimensions. Il est l'UN externe tableau, à l'intérieur des tableaux. L'intérieur des tableaux avoir autant d'éléments que le nombre de colonnes dans la gamme.
Ci-dessus tableau 2D est pour seulement 1 rangée avec deux colonnes.
Afin de créer une fonction personnalisée simple qu'un test, créer une fonction:
Si la série est A1:B5, la fonction retournera la valeur de A1;
Le seul moyen de savoir pour sûr, si votre argument a été adoptée dans le .gs fonction de serveur, si vous obtenez un résultat.
Il y a d'entrées que vous ne pouvez pas utiliser. Si vous utilisez une entrée qui n'est pas autorisé, alors (pour citer un extrait de la documentation):
Par exemple, vous ne pouvez pas utiliser MAINTENANT() ou RAND() comme argument.
OriginalL'auteur Alan Wells
Argument de la fonction séparateur dépend de la feuille de calcul de paramètres régionaux. Si la feuille de calcul de paramètres régionaux utilise la virgule comme séparateur de décimales, l'argument séparateur est le point-virgule:
Sinon il serait impossible de passer de décimales dans les fonctions de.
Avez-vous une référence qui prouve que cela ou est-ce juste une hypothèse? Virgule ne fonctionne pas pour moi, ni pour l'affiche originale, probablement parce que notre paramètres régionaux - au moins dans Excel le délimiteur est dépendant des paramètres régionaux et Google imite Excel syntaxe.
Il est en effet régionaux dépendant, mais par exemple dans
en-us
, l'argument{A1;B1}
est une ligne 2, colonne 1 tableau de références de plage, et{A1, B1}
est un 1 ligne, 2 du tableau de la colonne de la gamme de références.Jetez un oeil à la mise à jour de réponse. le fait de regarder bon pour vous? Si la feuille de calcul de paramètres régionaux utilise la virgule comme séparateur de décimales, l'argument séparateur est le point-virgule, sinon il serait impossible de passer décimales en fonctions. Merci beaucoup pour s'élever par la route :)!
L'OP problème n'est pas vraiment liée à cette réponse de l'OMI (ils étaient tout simplement en utilisant l'éditeur de test, qui ne peut fournir les valeurs des arguments de la fonction), mais vos modifications ont modifié mes votes sur votre réponse
OriginalL'auteur mrts
Il pourrait être la
A5:A
gamme, essayez deA5:A1000
ouA:A
. Le mélange d'une adresse de celluleA5
avec une adresse de colonneA
probablement une confusion dans l'API.OriginalL'auteur Gerry
veillez à utiliser des cas précis comme les identificateurs sont sensibles à la casse dans le Script Google.
ie.
la date n'est pas la même que la date ou la Date
C'est un piège classique pour ceux qui ne sont pas utilisés pour la casse langues!
OriginalL'auteur ShayneFromOz