Frage

Ich verwende Google Scripts für etwas Google Spreadsheets-Magie und die automatische Datumsanalyse macht mich wahnsinnig!Das Blatt, mit dem ich arbeite, ist mit allen möglichen Datumsformaten übersät, und ich würde sie viel lieber als Strings behandeln, als sie von Google bei jedem .getValues()-Aufruf in Date-Objekte konvertieren zu lassen.Nach langem Suchen finde ich immer noch keine Möglichkeit, Google daran zu hindern/deaktivieren, diese Zeichenfolgen automatisch zu analysieren.Weiß jemand wie?

War es hilfreich?

Lösung

Ja, es ist möglich, aber Sie müssen eine Änderung vornehmen Vor Rufen Sie getValues ​​auf und verwenden Sie getDisplayValues():

  // do not use getValues(), which will convert dates
  var string_data = my_sheet.getRange(...).getDisplayValues();

Wenn Sie den Anzeigewert nur im eingeschränkten Fall von beispielsweise Datumsangaben verwenden möchten, können Sie sowohl Werte als auch Anzeigen kopieren, dann testen, ob es sich bei Ihrem Wert um ein Datum handelt, und wenn ja, verwenden Sie stattdessen die entsprechende Anzeige:

  // use getDisplayValues() for dates, getValues() otherwise
  var string_data = my_sheet.getRange(...).getDisplayValues();
  var value_data =  my_sheet.getRange(...).getValues();

  value_data.forEach(function(row_vals, i) {
    row.forEach(function(cell_val, j) {
      if(is_date(cell_val)) // see e.g. https://stackoverflow.com/a/17110249/3160967
        do_something_with(string_data(i, j));
      else
        do_something_with(cell_val);
    });
  });

Abschließend muss das Obige geändert werden, wenn Sie es als Blattfunktion verwenden möchten, da Funktionsaufrufe automatisch getValues() anwenden, bevor der Funktionscode ausgeführt wird.Um dies zu umgehen, können Sie die unter beschriebenen Techniken verwenden https://webapps.stackexchange.com/a/30784

Andere Tipps

Das ist zwar nicht möglich, aber eine praktikable Lösung besteht darin, ein Hilfsblatt zu erstellen und eine Formel einzufügen, um alle Werte auf dem Quellblatt mit einer leeren Zeichenfolge zu verketten.Dann getValues() auf diesem Hilfsblatt, das nach der Verwendung vom Skript ausgeblendet oder entfernt werden kann.

Die Formel kann so einfach sein, dass man sie auf A1 des Hilfsblatts setzt

=ArrayFormula(Sheet1!A:T&"")

Eine Einschränkung bei dieser Problemumgehung besteht darin, dass, wenn der Benutzer eine benutzerdefinierte Formatierung für seine Daten festlegt, diese nicht beibehalten werden.Aber wenn das wichtig ist, können Sie sie erhalten, indem Sie Folgendes verwenden getNumberFormats()

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top