2010-09-10 13 views
6

J'aime écrire mes propres formules dans Google Documents Tableur. Mais souvent ce que je veux faire est très similaire à une fonction qui existe déjà. Par exemple, je n'ai pas trouvé de fonction permettant de transformer une date (31 août 2010) en le jour lexical de la semaine (mardi). Je voudrais écrire:Utiliser les formules de feuille de calcul existantes dans une formule personnalisée dans google docs/tableurs

=LexWeekDay('31-Aug-2010') 
'Tuesday' 

Il est clair que je peux écrire tout de cette logique en utilisant javascript de base, mais il existe déjà une fonction de feuille de calcul normale appelée WEEKDAY() qui takes a date and converts into into a number representing the day of the week[0 => Sunday, 1=> Monday, etc].

Comment puis-je accéder à cette fonction (ou à toute autre fonction), que les feuilles de calcul définissent déjà, à partir de mon script personnalisé?

+0

Copie possible de [Existe-t-il un moyen d'évaluer une formule stockée dans une cellule?] (Http://stackoverflow.com/questions/16303680/is-there-a-way-to-evaluate-a- formule-que-est-stocké-dans-une-cellule) –

Répondre

1

J'ai posé la même question au Google help, mais je n'ai pas obtenu de solution. Selon l'utilisateur Ahab:

Je comprends le besoin. J'ai fait part de la même dans le forum d'aide GAS 1 très tôt un lorsque le gaz est devenu disponible mais la réaction de l'équipe de gaz a été pas très prometteur ... :(Essentiellement nous avions besoin d'une classe de gaz qui contient les fonctions de feuille de calcul ne permettent les utiliser.

Notez que dans une feuille de calcul générale fonctions déjà peuvent pratiquement être utilisé comme la programmation fonctionnelle langue sans le besoin de scripts les en raison des fonctions de haut niveau comme ArrayFormula, FILTRE , SORT, UNIQUE, etc. Malheureusement, il n'est pas possible de créer par exemple. substitution de macro qui nous permettront de rapidement formules de réutilisation comme (en pseudo-macro Format ):

Nom: INVERSE Description: Inverse une matrice colonne Syntaxe: #INVERSE (tableau ) Appel: #INVERSE (# 1) Exécuter: = ARRAYFORMULA (SORT (# 1; ROW (# 1); FAUX))

0

dans votre appscript personnalisée, vous pouvez utiliser les formules en construction de feuille de calcul Google de cette manière:

Disons que vous voulez utiliser =WEEKDAY() fonction sur la cellule A1.

Ensuite, obtenir votre feuille de calcul active comme dans votre fonction appscript personnalisée:

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("YOUR_SHEET_NAME"); 

maintenant, définissez la formule comme ceci:

sheet.getRange("A1").setValue("=WEEKDAY()"); 

Aussi, si vous voulez convertir 0,1 etc au dimanche, lundi ...puis définir un tableau comme celui-ci:

var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']; 

Et puis utilisez:

var dayIndex = sheet.getRange("A1").getValue(); 
Logger.log(days[dayIndex]); 

Vous pouvez voir les journaux en utilisant ctrl + entrer ou en allant à Affichage-> Journaux dans l'éditeur de script lui-même.