2012-03-11 9 views
1

Google Appsスクリプトが新しく、UiAppフォームから日付文字列を解析する際に問題があります。この例では、ユーザーが指定した日付範囲内のタイムスタンプ付きスプレッドシートをフィルタできるようにするスクリプトを作成しています。google appsスクリプトを使用して日付文字列を解析する

私の問題は、従来のJavaScriptのフォーマットYYYY,M,D(2012年2月2日のためにすなわち2012,1,2)に(dateFromFieldという名前のテキストボックスから)日付文字列が渡された場合、以下のコードは無効な日付オブジェクトを返すことです:

function dateFilter(e) { 
    var fromDate = new Date(e.parameter.dateFromField); 
} 

私はe.parameter.dateFromFieldが指定された文字列(Logger.log(e.parameter.dateFromField);2012,1,2を返す)を正しく返し、その型がオブジェクトではなく文字列であることを確認しました。

私はすなわち、直接関数に日付文字列を入力する場合:

function dateFilter(e) { 
    var fromDate = new Date(2012,1,2); 
} 

しかし、私は有効な日付オブジェクトを取得します。私はこれら2つの例の違いを理解していません。どちらの場合も、2012,1,2という文字列がnew Date関数に渡されています。私は明らかに単純な何かを欠いている - 誰も私に何を教えてくれる?

答えて

5

手動で入力したときは、カンマで区切られた数字のリストを含む文字列ではなく、実際には3つの数値パラメータを渡しました。

私はあなたがパラメータを渡す前に分けることができると思います。

var dateParts = e.parameter.dataFromField.split(','); 
var fromDate = new Date(dateParts[0], dateParts[1], dateParts[2]); 
+0

私は単純なものが欠けていることを知っていましたが、それはちょうど恥ずかしいことです。私を気に入ってくれてありがとう - あなたのソリューションはきれいに働いていました。 – Nick

2

テキストボックスの代わりにUiAppのDateBoxとDatePickerクラスを使用することをお勧めします。彼らは実際の日付オブジェクトを返すので、まったく解析する必要はありません。これらはApps Scriptのドキュメントに追加されたばかりです。 hereを参照してください。

+0

だから彼らは持っている!これらを使用すると、確実に物事が楽になります - チップのおかげで。 – Nick

+0

ですが、廃止予定ですか? –

関連する問題