0

これが最初からの私の問題です...私は本当に誰かの助けが必要です...

私は自分のビジネスのためにイベント予約システムを作成する必要がありました。スプレッドシートに予約を入力するためのGoogleフォームを作成し、このデータをアカウントの関連するGoogleカレンダーに自動的に転送するためのコードが必要でした。私はこのコードを作成する誰かを見つけ、彼らがコードを作成できるようにグーグルフォーム/スプレッドシートを彼らと共有しました。

以下は、それらが作成したコードです。

フォームに情報を入力して送信すると、すべて正しい日付に表示されます。コードを見ると、開始に基づいて終日イベントが作成されます(いずれかの列に終日入力した場合)。時間(startdt)。

私の問題は、私の正しいエントリが、送信したときにカレンダーの1日早く表示され始めることです。これは、午後11時以降に送信したすべてのエントリで発生しました。問題が何であるかはわかりませんが、タイムゾーンに関係している可能性があると思います。私は英国に拠点を置いており、GMT + 0000で、スクリプトを作成した人はインドに拠点を置いています。スクリプトのタイムゾーンを変更しても、トリガーは自動的に変更されないことを読みました(元のタイムゾーンのままです)。

スプレッドシートのすべてが正しいのに、特定の時間後にエントリを送信すると、これが私のエントリがカレンダーの1日早く突然表示される原因になっている可能性がありますか?

コードを編集して、startdtではなく終了時間(enddt)に基づいて終日イベントを作成することで一時的に問題を修正できますが、これは短時間しか機能しません。午前11時までは、コードを元に戻す必要がありますか?そのすべては非常に紛らわしいです。

タイムゾーンの問題が発生した場合は、トリガーのタイムゾーンを確認する方法を教えてください。間違っている場合は、スクリプトでトリガーのタイムゾーンを編集する方法を教えてください。間違った日付に表示されることを混乱させることなく、ビジネスの予約を行うためにこれが必要なため、私は本当に行き詰まっています。

私のカレンダー、スプレッドシート、フォーム、スクリプトはすべてGMT+0000です

以下のスクリプトをコピーして貼り付け、編集できる終日のイベントセクションを太字にして、問題が解決するまで一時的に問題を並べ替えますか?

var ss = SpreadsheetApp.getActive();
/*function onEdit(e) {
   var doc = SpreadsheetApp.getActiveSheet();
setRowColors();
Browser.msgBox("Trigger it");
}*/

function onEdit(event){
  var doc = SpreadsheetApp.getActiveSheet();
  var r = event.source.getActiveRange();
  var currentCol = r.getColumn();
 // Browser.msgBox("currentCol:- "+currentCol);
  if(currentCol!= 10 && currentCol!= 11 && currentCol!= 12)
  {
  var currentRow = r.getRow();
 // Browser.msgBox("currentRow:- "+currentRow);
  var v = parseInt(currentRow);
   var dataRange = doc.getRange(v, 10, 1,3);
  var data = dataRange.getValues();
   for (i in data) {
    var row = data[i];
    var tom = row[0].toLowerCase();  

   // Browser.msgBox(tom);
    var steven = row[1].toLowerCase();
    var lucy = row[2].toLowerCase();
    if(tom=="added" )
     doc.getRange(v, 10, 1, 1).setValue("ADD"); 
     if(steven=="added" )
     doc.getRange(v, 11, 1, 1).setValue("ADD"); 
      if(lucy=="added" )
     doc.getRange(v, 12, 1, 1).setValue("ADD"); 

   }

}
    // calscript();
   //Browser.msgBox("Done:-");
}


function calscript() {
  //Browser.msgBox("start calscript:-");
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;  // First row of data to process
  var numRows = 2;   // Number of rows to process
  var dataRange = sheet.getRange(startRow, 1, sheet.getMaxRows(),35);
  var data = dataRange.getValues();

  for (i in data) {
    var row = data[i];
    var title = row[32].toString();
    // Browser.msgBox(title);// First column
    var desc = row[34];       // Second column
    var tstart = row[2];
   // Browser.msgBox(tstart);// First column
    var tstop = row[3];
   // Browser.msgBox(tstop);// First column
    var loc = row[31];
    var tom=row[9].toLowerCase();
    var steven=row[10].toLowerCase();
    var lucy=row[11].toLowerCase();
    var day=row[4].toLowerCase();
    if(tom=="add")
    {
      AddtoTom(day,title, tstart, tstop, {description:desc,location:loc});
      dataRange.getCell(parseInt(i)+1,10).setValue('Added'); 
    }
    if(steven=="add")
    {
      AddtoSteven(day,title, tstart, tstop, {description:desc,location:loc});
      dataRange.getCell(parseInt(i)+1,11).setValue('Added'); 
    }
    if(lucy=="add")
    {
      AddtoLucy(day,title, tstart, tstop, {description:desc,location:loc});
      dataRange.getCell(parseInt(i)+1,12).setValue('Added'); 
    }
    //cal.createEvent(title, new Date("March 3, 2010 08:00:00"), new Date("March 3, 2010 09:00:00"), {description:desc,location:loc});
   // cal.createEvent(title, tstart, tstop, {description:desc,location:loc});
 }
}
function AddtoTom(day,title,startdt,enddt,desc)
{
   var cal = CalendarApp.openByName("Tom");
  if(day=="all day")
    **cal.createAllDayEvent(title, **startdt,** desc)**
  else
    cal.createEvent(title, startdt, enddt, desc);

}
function AddtoSteven(day,title,startdt,enddt,desc)
{
   var cal = CalendarApp.openByName("Steven");
 if(day=="all day")
    **cal.createAllDayEvent(title, **startdt**, desc)**
  else
    cal.createEvent(title, startdt, enddt, desc);

}
function AddtoLucy(day,title,startdt,enddt,desc)
{
   var cal = CalendarApp.openByName("Lucy");
 if(day=="all day")
    **cal.createAllDayEvent(title, **startdt**, desc)**
  else
    cal.createEvent(title, startdt, enddt, desc);

}

function onOpen() {
   //  Browser.msgBox('start');// First column
  var menuEntries = [];

  menuEntries.push({name: "Add To Calendar", functionName: "calscript"});
  ss.addMenu("Main Menu", menuEntries);
 // Browser.msgBox('end');// First column
}

function onInstall() {
  onOpen();
}

function onFormSubmit()
{

}
function configure() {
 // Browser.msgBox('trigger');// First column
  ScriptApp.newTrigger("calscript").timeBased().everyMinutes(1).create();
  //Browser.msgBox('trigger ends');// First column
}
4

1 に答える 1

0

OK、私はばかだったと思います.......それは実際にはスクリプトの問題ではなく、2013年4月1日以降に1日早く表示された唯一の結果として夏時間の問題であることが判明しました.カレンダー、フォーム/スプレッドシート、およびスクリプトのタイムゾーンを GMT+0000 に設定しました。それらをすべて「GMT + 0000夏時間なし」にリセットするだけで、問題が解決したようです。日付が 1 日遅れたり、時刻が 1 時間遅れたりする同様の日付の問題を抱えている人には、これをお勧めします。

于 2012-07-25T11:16:19.920 に答える