这是我从一开始的问题......我真的需要某人的帮助......
我需要为我的公司创建一个活动预订系统。我创建了一个Google表单,用于在电子表格中输入预订,然后我需要一些代码来自动将此数据传输到我帐户中的相关Google日历。我发现有人创建此代码,与他们共享谷歌表单/电子表格,以便他们可以创建代码。
以下是他们创建的代码:
我可以将信息输入到表单中,制作子目录并且它们都出现在正确的日期,您可以通过代码看到它将创建一个全天事件(如果我已经在其中一个列中全天输入)在开始时间(startdt)。
我的问题是,当我提交时,我的日历中提前一天开始出现正确的条目。这发生在我在晚上11点之后提交的任何条目中。我不确定问题是什么,但我相信它可能与时区有关。 我的总部设在英国,GMT + 0000,为我制作剧本的人都在印度。我已经读过,当您更改脚本的时区时,触发器不会随之自动更改(它们保留为原始时区)。
这可能导致我的条目突然出现在我的日历中的一天,如果我在一定时间后提交它们,即使电子表格中的所有内容都是正确的???
我可以通过编辑代码来临时解决问题,根据结束时间(enddt)而不是startdt创建全天事件但这只能在短时间内工作..直到上午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
}
答案 0 :(得分:0)
好吧我觉得我是个白痴.......事实证明这不是一个真正的剧本问题,这是一个夏令时问题,因为在4月1日之后出现的一天早期的唯一结果2013我有我的日历的时区,表格/电子表格和脚本设置为GMT + 0000。我只是将它们全部重置为'GMT + 0000没有夏令时',这似乎解决了这个问题。我向有类似日期问题的人推荐这个,日期被推迟一天,或者时间被推迟一个小时。