对Google文档(而非电子表格)的内容执行基本数学运算


12

在Microsoft Word中,可以使用非常简单的公式,例如=SUM(ABOVE)显示一列的总数=SUM(LEFT)等。是否可以在Google文档中执行类似的操作?显然,这在Google Spreadsheets中是可能的,但是我需要在文档的表格中进行操作。

Answers:



3

为了说明为此目的使用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);
  }
}

0

使用附加的可逆公式-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

免责声明:我是该加载项的作者。免责声明:到目前为止,尚无法以可视方式修改渲染的表。我在做这个工作。


0

我使用了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.');  
    }  
  }  
}

也可以取消注释最后一行,并且代码会将答案写在文档中。

我曾经使用过且运作良好的运算子:

  • + 加成
  • 减法
  • * 乘法
  • /
  • ** 求幂
  • ( ) 按操作顺序分组号码
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.