0

現地時間でGoogleカレンダーの予定を作成するにはどうすればよいですか?私は、GoogleスプレッドシートからGoogleカレンダーのイベントを作成しようとしています

例スプレッドシート:

sample event spreadsheet

(詳細と日付が不規則なので、シンプルな再発イベントが静かなカットもしません)

コード:

function walk_sheet(){ 

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName("CalendarGenerator"); 

    for (var i = 2; i <= 39; i++) { 
     var date = sheet.getRange(i, 2).getValue(); 
     var start = parseTime(sheet.getRange(i, 3).getDisplayValues().toString()) ; 
     var end = parseTime(sheet.getRange(i, 4).getDisplayValues().toString()) ; 
     var summary= sheet.getRange(i, 6).getValue(); 
     var disc = sheet.getRange(i, 7).getValue(); 

    add_bsf_event(date, start, end, summary, disc); 
    } 
} 

function add_bsf_event(dateIn, start, end, summary, disc){ 
    start_date= new Date(dateIn.getYear(), dateIn.getMonth(), dateIn.getDate(), start.getHours(), start.getMinutes(),0,0); 
    end_date = new Date(dateIn.getYear(), dateIn.getMonth(), dateIn.getDate(), end.getHours(), end.getMinutes(),0,0); 

... 
CalendarApp.getCalendarById(calendarId).createEvent(summary, start_date, end_date); 
} 

そして、それはexceptioで動作しますn日の節約時間。 Googleカレンダーの3/13/2017以降のイベントは1時間後にリクエストされます(午後6時55分ではなく午後7時55分)。

私が試した:ローカルタイムを受け入れるGoogleカレンダーの方法を探してい

  1. (通称UTCに変換18:55とGoogleカレンダーのAPIを送る)
  2. は、ネイティブJS方法を探して現地時間をUTCに変換します。

いずれの解決策も見つけられませんでした。私が見つけていないか、この問題とは違ったアプローチですか?

答えて

0

私の解決方法は、GoogleカレンダーのRuby APIを使用してイベントを挿入することでした。セットアップに苦労しましたが、接続が確立され、ボイラープレートコードがダウンすると、Rubyは夏時間の変更を完全に処理します。


Googleのクイックスタートガイドでは、まともな仕事をしていません: https://developers.google.com/google-apps/calendar/quickstart/ruby

ただし、Windowsのチャンスで、あなたのランニングは、SSL証明書を検証するために失敗している場合。私は挿入するイベントに使用

require 'openssl' 
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE 

Rubyの方法:あなたがして無効にすることができます(すべてのイベントが同じタイムゾーンにある)

def insert_event(summary, description, start_time, end_time, location, cal_id='primary') 
    event = Google::Apis::CalendarV3::Event.new({ 
        summary:summary, 
      #color_id:5, 
       location:location, 
      description:description, 
      start:{date_time:start_time.to_datetime.rfc3339}, 
       end:{date_time:end_time.to_datetime.rfc3339}, 
     #reminders:{use_default: true} 
    }) 
    #puts event.to_json 
    result = $service.insert_event(cal_id, event) 
    #puts result 
    puts "Event created: #{result.html_link}" 
end 
0

GoogleカレンダーAPI documentationをチェックすると、イベントの開始と終了に別のタイムゾーンを使用できることがここで説明されています。

今、タイムゾーンを変換する方法については、私はこのtutorialがあなたを助けることができると思います。ここでは、この変換を達成するために必要なことを段階的に説明します。

詳細については、このコードがJAVAであっても、関連するSO questionを確認してください。

+0

私の問題は、夏時間でないタイムゾーンである...私は試してみましたGoogleカレンダーAPIでstart/end.timeZoneを指定しても効果はありませんでした。 – Nathan

関連する問題