Formulas for Google Docs - Google Docs add-on


Have you ever wished you could synchronize content within one Google doc? Do you need temporary placeholders that you will replace…

Have you ever wished you could synchronize content within one Google doc? Do you need temporary placeholders that you will replace later? Do you want to generate text? Do you miss spreadsheets in docs? If you answered yes to one of these questions, this Google doc extension is for you. It enables you to define names (a.k.a. variables) anywhere in the document, and to insert computations that produce rich text anywhere in the document. # Define names You can define a name anywhere in your document. It has to start with a word, the sign equal '=' and a non-empty space behind it. If there is an opening parenthesis, the content will be evaluated as JavaScript. If there is no opening parenthesis, the remaining until the end of the newline is treated as raw text. Definitions can depend on previous definitions.
The following are all valid definitions of names: version = 1.0 beta name = ("MySoft" + version) citations = ({ mayer18: "https://dl.acm.org/citation.cfm?id=3276497", chugh16: "https://dl.acm.org/citation.cfm?id=2908103" }) cite = (function (name) { return typeof citations[name] !== "undefined" ? ["[" + name + "]", {link: citations[name]}] : "[" + name + "???]"; }) # Write formulas in your document Anywhere in the document, write = followed by either * a name
* a name followed by a JavaScript expression in parentheses
* a JavaScript expression inside parentheses or square brackets If the formula has the syntax `=(/*customname=*/blablah)`, non only it will output the result of evaluating `blablah`, but also assign it the name `customname` so that it can be reused in subsequent formulas. For example, in a document, you would write raw =name is out! =[name, {bold: true}] is a n=(function() { var x = ""; var i = 10; while(i-- > 0) x = x + "i"; return x} ())ce software based on =(/*be=*/"bidirectional evaluation") =cite("mayer18") that goes beyond the original ideas of prodirect manipulation =cite("chugh16") because =be is more flexible. # Render formulas Open the menu "Formulas" and click on "Evaluate formulas". The document above would be rendered as: MySoft 1.0 beta is out! MySoft 1.0 beta is a niiiiiiiiiice software based on bidirectional evaluation [mayer18] that goes beyond the original ideas of prodirect manipulation [chugh16] because bidirectional evaluation is more flexible. Formulas used in the document should either return raw text, or a 2-element array where the first element is the text, and the second is a Javascript object containing styling material. If the method setThing exists in this page https://developers.google.com/apps-script/reference/document/text, then thing : value is a valid style attribute. Here is a list of supported attributes and shortcuts * backgroundColor (or background): a string representing a color like "#FF00FF".
* bold: boolean (true or false).
* fontFamily: string representing a valid font name.
* fontSize: integer representing a valid font size.
* foregroundColor (or color): a string representing a color like "#FF00FF".
* italic: boolean (true or false).
* linkUrl (or link): string representing an URL.
* strikeThrough (or strike): boolean (true or false).
* textAlignment (or align): either "normal", "superscript" or "subscript"
* underline: boolean (true or false). # Visualize where formulas are being used To make sure a field is computed and not just text, open "Formulas" and then click on "Highlight computed fields". # Reveal formulas It can be useful to change formulas. To do so, open "Formulas" and click on "Reveal formulas". It will replace all computed fields by their respective formulas and highlight them in orange. You can then edit any formula. Once you're done, click on "Formulas" and then "Evaluate formulas" to replace the formulas by their values.
If you click on "Reveal formula under cursor", and the cursor touches a formula, it will let you edit only this formula.