0

私は日付ピッカーを使用しています。日、月、年がありますが、時間(秒、分、時)はありません。私はすでにGoogleスプレッドシートにレコードを挿入しています。しかし、私はレコードを検索し、特に日付レコードでレコードを取得するときに問題が発生します。Googleスプレッドシートから日付レコードを取得する

たとえば、Googleスプレッドシートの日付が3/25/2017の場合です。レコードを検索すると、日付の値は2017-03-24T15:00:00.000Zとして返され、日が1日減少します。

この問題を解決するにはどうすればよいですか?

助けてください。

コード

Htmlの

<div id="Searchrecord"> 
<h2>Search </h2> 
<form id="fsrecord"> 
<input type="text" name="sinvoice" id="sinvoice" placeholder="by invoice number"/> <br/> 
<input type="text" name="surname" id="surname" placeholder="by your name"/> <br/> 
<input type="text" name="scustomername" id="scustomername" placeholder="by customer name"/> <br/> 
<input type="text" name="spayementdate" id="spayementdate" placeholder="by payment date"> <br> 
<input type="submit" value="search" /> 
</form> 
</div> 

<div id="searchresult"> 

</div> 

<script> 
$(document).ready(function() { 
$("#spayementdate").datepicker(); 
$("#fsrecord").submit(function() { 
    google.script.run.withSuccessHandler(function(retsearch){ 
    var response = JSON.parse(retsearch); 
    var newHTML=[]; 
     newHTML.push('<table>' + '<tr>' +'<td>'+"Invoice"+'</td>'+ 
             '<td>'+"Your Name"+'</td>'+ 
             '<td>'+"Customer Name" +'</td>'+ 
             '<td>'+"Email" + '</td>'+ 
             '<td>'+"Project Name" + '</td>'+ 
             '<td>'+"Amount of Money" + '</td>'+ 
             '<td>'+"Payment Date" +'</td>'+ 
             '<td>'+"Date Create" +'</td>'+ 
             '<td>'+"Branch" +'</td>'+ 
             '<td>'+ "File url" +'</td>' 
     + '<tr>'); 
    for(var i =0 ; i< response.length ; i++){ 
     newHTML.push('<tr>' + '<td>'+ response[i].invoice + '</td>' 
          + '<td>'+ response[i].yourname + '</td>' 
          + '<td>'+ response[i].customername + '</td>' 
          + '<td>'+ response[i].email + '</td>' 
          + '<td>'+ response[i].projectname + '</td>' 
          + '<td>'+ response[i].amountofmoney + '</td>' 
          + '<td>'+ response[i].paymentday + '</td>' 
          + '<td>'+ response[i].datecreate + '</td>' 
          + '<td>'+ response[i].branch + '</td>' 
          + '<td>'+ '<a href="' + response[i].file + '" target="_blank" >file!</a>' + '</td>' 


     +'</tr>'); 
    } 
    newHTML.push('</table>'); 
    $("#results").hide(); 
    $("#searchresult").html(newHTML.join("")); 

    }).processSearch(this); 

}); 

}); 

</script> 

Code.cs

function getData() { 
    var ss=SpreadsheetApp.openById('1PWJyASHmjJ_W8-72u8bbrGbN-Nv6kdkCvjdmYuNNlEY'); 
    var sheet=ss.getSheetByName('invoice1'); 
    return sheet; 
} 

function processSearch(searchform){ 
var sheet = getData(); 
var data = ObjApp.rangeToObjects(sheet.getDataRange().getValues()); 
var searchinvoice=searchform.sinvoice; 
var searchfname=searchform.surname; 
var searchcname=searchform.scustomername; 
var searchpayementdate=searchform.spayementdate; 
var results = []; 
var events; 
for(var i=0 ; i < data.length ; i++) { 
if(searchinvoice == data[i].invoice) { 
     events ={invoice:data[i].invoice,yourname:data[i].yourname, customername:data[i].customername,email:data[i].email,projectname:data[i].projectname,amountofmoney:data[i].amountofmoney,paymentday:data[i].paymentday,datecreate:data[i].datecreate,branch:data[i].branch,file:data[i].file }; 

     results.push(events); 
     return JSON.stringify(results); 
     } 
} 

    //Logger.log(results); 
    return JSON.stringify(results); 
} 
+0

[This(http://stackoverflow.com/questions/948532/how-do-you-convert-a-javascript-date-to-utc)または類似のQ/Asがお手伝いします。 –

+0

スクリプトとスプレッドシートが異なるタイムゾーンにある可能性があります。 –

答えて

0

私はあなたが本当にコード自体に依存しない2つの問題を抱えているかもしれないと思います。

  1. 日付と時刻のフィールドは、実際のGoogleスプレッドシートでEPOC以来マイクロ秒として保存されます。
  2. 日付/時刻の形式を設定すると、あなたのGoogleスプレッドシートは、あなたの物理的な場所と同じタイムゾーンロケール情報を使用していることを確認する必要があります - これらが異なる場合、あなたは混乱の結果を取得します。

日付のみまたは時刻のみを保存すると、不足している部分のデフォルト値がいくつか想定されます。したがって、日付のみを保存すると、時間部分は値を引き継ぎ、時間を節約すると日付部分は値をとることになります。これらの仮定値は、ロケールとタイムゾーンの設定に大きく依存します。

表示されている内容に影響があるかどうかを確認してください。

関連する問題