Domanda

Sto usando Google script per un po 'Google Spreadsheets magia e la data automatica di analisi mi sta facendo impazzire! Il foglio con cui sto lavorando è piena di tutti i tipi di formati di data e mi sarebbe molto meglio trattare con loro come stringhe, che avere Google convertirli in oggetti Date con ogni .getValues) di chiamata (. Dopo molte ricerche, non riesco ancora a trovare un modo per fermare / disabilitare Google di parsing automaticamente queste stringhe. Qualcuno sa come?

È stato utile?

Soluzione

Sì, è possibile, ma è necessario fare un cambiamento prima chiamando getValues ??e utilizzare getDisplayValues ??():

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

Se si desidera utilizzare solo il valore visualizzato nel caso limitata, per esempio, le date, è possibile copiare entrambi i valori e display, quindi verificare se il valore è una data, e se lo è, utilizzare il display corrispondente, invece:

  // 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);
    });
  });

Infine, viene eseguita la modifica esigenze di cui sopra, se si desidera utilizzare come una funzione foglio, in quanto le chiamate di funzione si applicano automaticamente getValues ??() prima del codice funzione. Per aggirare il problema, è possibile utilizzare le tecniche descritte in https://webapps.stackexchange.com/a/30784

Altri suggerimenti

E 'infatti non è possibile, ma una soluzione fattibile è quella di creare un foglio ausiliario e inserire una formula per concatenare i valori sul foglio di origine con una stringa vuota. Poi getValues() in questa scheda ausiliaria, che può essere nascosto o rimosso dallo script dopo usato.

La formula può essere semplice come impostare questa su A1 del foglio ausiliario

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

Un avvertimento con questa soluzione è che se l'utente impostato una formattazione personalizzata per le sue date, non saranno mantenute. Ma se questo è importante si possono ottenere utilizzando getNumberFormats()

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top