Das Datum wird in Google Sheets Macro / Script als "Bereich" kopiert

Nov 05 2020

Ich habe Probleme mit einem möglichen kleinen Problem in Google Sheets. Ich möchte einfach einen Datumswert in eine andere Zelle kopieren, ohne das Datumsformat usw. zu ändern.

Wenn ich das Datum jedoch in einer Variablen speichere, findet der Logger "Bereich". Ich habe auch versucht zu formatieren, aber am Ende habe ich falsche Daten, aktuelle Daten oder gar nichts gefunden.

Hinweis: Zelle 63,4 enthält einen Datumswert, der in der Tabelle als Datum formatiert ist.

function test() {
  var as = SpreadsheetApp.getActiveSpreadsheet();
  var ss = as.getActiveSheet();
  var start = ss.getRange(63,4);
  var row = start.getRow();
  var col = start.getColumn();
  Logger.log(start);
  
  start = new Date(0);
  ss.getRange('C2').setValue(start);
  
  ...
  
}

Nach dem Ausführen dieses Codes wird im Protokoll "RANGE" angezeigt.

Haben Sie eine Idee, wie Sie das lösen können? Ich glaube, ich speichere die Zelle nicht richtig, aber ich habe keine weiteren Ideen gefunden.

Antworten

2 Marios Nov 05 2020 at 06:28

Erklärung / Problem:

  • Dies liegt daran, dass Sie den Wert nicht erhalten und getRange eine Instanz der Bereichsklasse zurückgibt .
  • Beachten Sie, dass Sie getDisplayValue () verwenden möchten , wenn der Wert ein Datum ist .

Lösung:

Ersetzen:

var start = ss.getRange(63,4);

mit:

var start = ss.getRange(63,4).getDisplayValue();

und entfernen Sie diesen Teil:

start = new Date(0);

da dies den aktuellen Wert überschreibt, der startdem gewünschten Datum zugewiesen ist.


Code-Auszug:

function test() {
  var as = SpreadsheetApp.getActiveSpreadsheet();
  var ss = as.getActiveSheet();
  var start = ss.getRange(63,4).getDisplayValue(); // cell D63
  ss.getRange('C2').setValue(start);  
}