Answers:
目前,Google文档(文档)不包含进行计算的功能。
一种替代方法是使用加载项或Google Apps脚本来扩展Google文档的内置功能。
为了说明为此目的使用Apps脚本的过程,我编写了一个函数,用于对文档中选定的值求和:在表,段落中或在多个段落中,等等。
它由菜单命令“总和”调用,位于“自定义”下;打开文档时创建此菜单项。选择文本用空格分隔,然后将每一段解释为一个数字(如果可能)。将添加此类数字,并通过alert
对话框将结果显示给用户。(我考虑过将其插入文档中,但是这样做并不自然:当用户选择文本时,光标位置会丢失。)
这是一次计算。如果更改了值,则需要再次执行。
function onOpen() {
DocumentApp.getUi().createMenu('Custom').addItem('Sum selected', 'sum').addToUi();
}
function sum() {
var selection = DocumentApp.getActiveDocument().getSelection();
if (selection) {
var elements = selection.getRangeElements();
var s = 0;
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
var text = element.getElement().editAsText();
if (text) {
var str = text.getText();
if (element.isPartial()) {
str = str.slice(element.getStartOffset(), element.getEndOffsetInclusive() + 1);
}
var pieces = str.split(/\s+/);
for (var j = 0; j < pieces.length; j++) {
s += (parseFloat(pieces[j], 10) ? parseFloat(pieces[j], 10) : 0);
}
}
}
DocumentApp.getUi().alert(s);
}
}
使用附加的可逆公式-Sketch-n-Script,您可以添加公式以显示表格并在表格上执行任意JavaScript计算。
在您的文件中写下:
expenses = ([10, 20, 30])
incomes = ([30, 20, “”])
=table([["Expenses", "Income"]].concat(rotate([expenses, incomes])))
Totals
=table([["Expenses", "Income"]].concat([[sum(expenses),sum(incomes)]]))
点击“显示值”。您应该获得以下内容-我在“总计”中添加了粗体:
加载项的网址:https : //chrome.google.com/webstore/detail/formulas-for-google-docs/kgjbgmonlnhglokmfnpnklegakfknbeh
免责声明:我是该加载项的作者。免责声明:到目前为止,尚无法以可视方式修改渲染的表。我在做这个工作。
我使用了user79865的代码并进行了一些更改。
这段代码可以评估所选文本中的任何简单方程式:
function onOpen() {
DocumentApp.getUi().createMenu('Custom')
.addItem('Evaluate', 'evaluate').addToUi()
.addToUi();
}
function evaluate() {
var selection = DocumentApp.getActiveDocument().getSelection();
if (selection) {
var element = selection.getRangeElements()[0];
var text = element.getElement().editAsText();
if (text) {
var str = text.getText();
if (element.isPartial()) {
str = str.slice(element.getStartOffset(), element.getEndOffsetInclusive() + 1);
}
var val = eval(str);
val = +val.toFixed(2)
DocumentApp.getUi().alert("Equation: " + str + "\nResult: " + val);
//text.appendText('\nAppended text.');
}
}
}
也可以取消注释最后一行,并且代码会将答案写在文档中。
我曾经使用过且运作良好的运算子:
+
加成–
减法*
乘法/
师 **
求幂 ( )
按操作顺序分组号码