Wykonuj podstawowe obliczenia matematyczne dotyczące zawartości Dokumentu Google (nie arkusza kalkulacyjnego)


12

W Microsoft Word można zastosować bardzo prostą formułę, np. =SUM(ABOVE)Do wyświetlenia sumy kolumny =SUM(LEFT)itp. Czy w Dokumentach Google można zrobić coś podobnego? Oczywiście jest to możliwe w Arkuszach kalkulacyjnych Google, ale muszę to zrobić w tabeli w dokumencie.

Odpowiedzi:



3

Aby zilustrować użycie Apps Script do takiego celu, napisałem funkcję, która sumuje wybrane wartości w dokumencie: albo w tabeli, albo w akapicie, albo w kilku akapitach itp.

Jest on wywoływany przez polecenie menu „Suma wybrana”, znajdujące się w „Niestandardowe”; ten element menu jest tworzony po otwarciu dokumentu. Tekst wyborów jest dzielony spacją, a następnie każdy utwór jest interpretowany jako liczba (jeśli to możliwe). Takie liczby są dodawane, a wynik jest wyświetlany użytkownikowi w alertoknie dialogowym. (Zastanawiałem się nad wstawieniem go do dokumentu, ale nie ma na to naturalnego miejsca: gdy użytkownik wybiera tekst, pozycja kursora jest tracona).

Jest to jednorazowa kalkulacja; jeśli wartości zostaną zmienione, należy wykonać to ponownie.

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

Używając dodatkowej formuły odwracalnej - Sketch-n-Script, możesz dodawać formuły, aby wyświetlić tabelę, a także wykonać na niej dowolne obliczenia JavaScript.

Napisz w swoim dokumencie:

expenses = ([10, 20, 30])
incomes = ([30, 20, “”])

=table([["Expenses", "Income"]].concat(rotate([expenses, incomes])))

Totals

=table([["Expenses", "Income"]].concat([[sum(expenses),sum(incomes)]]))

Kliknij „Wyświetl wartości”. Powinieneś uzyskać następujące - dodałem pogrubienie do „Totals”:

Wykonanie

Adres URL dodatku: https://chrome.google.com/webstore/detail/formulas-for-google-docs/kgjbgmonlnhglokmfnpnklegakfknbeh

Oświadczenie: Jestem autorem tego dodatku. Oświadczenie: Na razie nie jest jeszcze możliwa wizualna modyfikacja renderowanych tabel. Pracuję nad tym.


0

Wziąłem kod user79865 męska i wprowadziła pewne zmiany.

Ten kod może ocenić dowolne proste równanie z wybranego tekstu:

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.');  
    }  
  }  
}

Można również odkomentować ostatni wiersz, a kod zapisze odpowiedź w dokumencie.

Operatory, z których korzystałem i które działały dobrze:

  • + Dodanie
  • Odejmowanie
  • * Mnożenie
  • / Podział
  • ** Potęgowanie
  • ( ) Numery grup w kolejności operacji
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.