Apps脚本:字符串的新日期(...) [英] Apps script : new Date(...) of string

查看:92
本文介绍了Apps脚本:字符串的新日期(...)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用应用脚本和Google日历我收到具有相同名称的活动

  function authorize(){
var oauthConfig = UrlFetchApp.addOAuthService(calendar);
var scope =https://www.googleapis.com/auth/calendar;
oauthConfig.setConsumerKey(anonymous);
oauthConfig.setConsumerSecret(anonymous);
oauthConfig.setRequestTokenUrl(https://www.google.com/accounts/OAuthGetRequestToken?scope=+范围);
oauthConfig.setAuthorizationUrl(https://accounts.google.com/OAuthAuthorizeToken);
oauthConfig.setAccessTokenUrl(https://www.google.com/accounts/OAuthGetAccessToken);


函数beginEnd(calId,eventName){
authorize();
var key =...;
var query = encodeURIComponent(eventName);
calId = encodeURIComponent(calId);
var params = {
method:get,
oAuthServiceName:calendar,
oAuthUseToken:always,
};
var url =https://www.googleapis.com/calendar/v3/calendars/\"+
calId +/ events?q =+ query +& key =+ key;
var request = UrlFetchApp.fetch(url,params);
var response = Utilities.jsonParse(request.getContentText());
var items = response.items;
for(i = 0; i< items.length; i ++){
var start =(items [i] .start.dateTime);
var end =(items [i] .end.dateTime);
Logger.log([start,end]);


$ / code>

但是,当我尝试将开始转换为新日期时:

  var start =(items [i] .start.dateTime); 
Logger.log(start);
Logger.log(new Date(start));

我得到

  2013-01-21T15:00:00-03:00 
Wed Dec 31 16:00:00 PST 1969

为什么?

解决方案

似乎日期定义不喜欢连字符...



<即使我确定可以找到更好的解决方案(我不是正则表达式的专家; - )

  Logger.log(new Date('2013-01-21T15:00:00-03:00'.replace(/  -  / g,'/')。replace(/ [AZ] /,'') .substr(0,19)))


with apps script and google calendar I get the events with same name:

function authorize() {
  var oauthConfig = UrlFetchApp.addOAuthService("calendar");
  var scope = "https://www.googleapis.com/auth/calendar";
  oauthConfig.setConsumerKey("anonymous");
  oauthConfig.setConsumerSecret("anonymous");
  oauthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken?scope="+scope);
  oauthConfig.setAuthorizationUrl("https://accounts.google.com/OAuthAuthorizeToken");    
  oauthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken");  
}

function beginEnd(calId, eventName){
  authorize();
  var key = "...";
  var query = encodeURIComponent(eventName); 
  calId = encodeURIComponent(calId);
  var params = {
    method: "get",
    oAuthServiceName: "calendar",
    oAuthUseToken: "always",
  };
  var url = "https://www.googleapis.com/calendar/v3/calendars/"+
    calId+"/events?q=" + query + "&key=" + key;
  var request = UrlFetchApp.fetch(url, params);
  var response = Utilities.jsonParse(request.getContentText());
  var items = response.items;
  for ( i = 0 ; i < items.length ; i++){
    var start = (items[i].start.dateTime);
    var end =  (items[i].end.dateTime);
    Logger.log( [start,end]);
  } 
}

but, when I try convert start to new Date:

var start = (items[i].start.dateTime);
Logger.log(start);
Logger.log( new Date(start) );

I get

2013-01-21T15:00:00-03:00
Wed Dec 31 16:00:00 PST 1969

why ?

解决方案

Seems that date definition doesn't like hyphens...

it works like this, even if I'm sure a better solution can be found (I'm not a regex expert ;-)

Logger.log(new Date('2013-01-21T15:00:00-03:00'.replace(/-/g,'/').replace(/[A-Z]/,' ').substr(0,19)))

这篇关于Apps脚本:字符串的新日期(...)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆