質問

GoogleスプレッドシートマジックにGoogleスクリプトを使用しています。自動日付の解析は私を駆り立てています!私が使用しているシートには、あらゆる種類の日付形式が散らばっています。Googleが各.getValues()呼び出しでデートオブジェクトに変換するよりも、私はそれらを文字列として扱いたいと思います。多くの検索の後、Googleがこれらの文字列を自動的に解析するのを停止/無効にする方法をまだ見つけることができません。誰かがどのように知っていますか?

役に立ちましたか?

解決

はい、それは可能ですが、あなたは変更を加える必要があります getValuesを呼び出し、getDisPlayValues()を使用します。

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

たとえば日付の限られたケースでディスプレイ値のみを使用する場合は、両方の値とディスプレイをコピーし、値が日付であるかどうかをテストできます。

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

最後に、関数が実行される前にgetValues()を自動的に適用するため、シート機能として使用する場合は、上記の変更が必要です。これを回避するには、説明されているテクニックを使用できます https://webapps.stackexchange.com/a/30784

他のヒント

確かに不可能ですが、実行可能な回避策は、補助シートを作成し、空の文字列でソースシート上のすべての値を連結する式を挿入することです。それで getValues() この補助シートでは、使用後にスクリプトによって非表示または削除される場合があります。

式は、これを補助シートのA1に設定するのと同じくらい簡単です

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

この回避策の注意点は、ユーザーが日付のカスタムフォーマットを設定した場合、それらは保持されないことです。しかし、それが重要であれば、あなたはそれらを使用することでそれらを取得することができます getNumberFormats()

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top