gpt4 book ai didi

javascript - Google Apps 脚本 - createEvent 函数不创建日历事件

转载 作者:行者123 更新时间:2023-11-30 17:10:12 25 4
gpt4 key购买 nike

我们正在尝试使用 Google 表单创建一个在线表单来接受预约请求。这个过程应该是这样的:

  1. 用户填写表格并提交他们的信息(有效)
  2. 一封电子邮件被发送到我们的 Gmail 以通知我们有新的传入请求(这有效)
  3. 我们进入 Google 电子表格。有3张。一张名为 Requests 的表格。另一个称为已接受。还有一个叫做Rejected(这些是创建的)
  4. “请求”表的最后一列有一个下拉菜单,其中包含已接受或已拒绝的值。根据我们的选择,它会将整行移动到适当的工作表中——接受或拒绝。 (这一直有效到下面的第 5 步)
  5. 如果该行被移至已接受,它应该创建一个新的日历事件。这是不起作用的部分。该行已正确移动到“已接受”工作表中,但不会创建新的 Google 日历事件。

奇怪的是,如果我们手动运行该函数,它就可以工作。它获取最后一行并创建一个事件。如果我们尝试通过直接调用函数来通过我们的代码直接运行该函数,它不会创建事件。这是我们的 moverow.gs 代码

(请注意,所有 secret 的身份信息都已删除,例如日历 ID):

function onEdit(e) {
try { moveRow(e) } catch (error) { Browser.msgBox(error) }
}

function moveRow(e) {

var rowStart = e.range.rowStart;
var colStart = e.range.columnStart;

var calendarStaff1Id = "<link to calendar>";
var calendarStaff2Id = "<link to calendar>"
var calendarStaff3Id = "<link to calendar>"
var calendarStaff4Id = "<link to calendar>"

if ( rowStart == e.range.rowEnd && colStart == e.range.columnEnd ) {
var active = e.source.getActiveSheet();
var name = active.getName();

if ( name == "Requests" && colStart == 10 ) {
var value = e.value;

if ( value == "ACCEPTED (S1)" ) {
var rowValues = active.getRange( rowStart + ':' + rowStart ).getValues();
e.source.getSheetByName("Accepted").appendRow(rowValues[0])
active.deleteRow(rowStart);
var calendarId = calendarStaff1Id;
addEvent();

}

if ( value == "ACCEPTED (S2)" ) {
var rowValues = active.getRange( rowStart + ':' + rowStart ).getValues();
e.source.getSheetByName("Accepted").appendRow(rowValues[0])
active.deleteRow(rowStart);
var id = calendarStaff2Id;
addEvent();

}

if ( value == "ACCEPTED (S3)" ) {
var rowValues = active.getRange( rowStart + ':' + rowStart ).getValues();
e.source.getSheetByName("Accepted").appendRow(rowValues[0])
active.deleteRow(rowStart);
var calendarId = calendarStaff3Id;
addEvent();

}

if ( value == "ACCEPTED (S4)" ) {
var rowValues = active.getRange( rowStart + ':' + rowStart ).getValues();
e.source.getSheetByName("Accepted").appendRow(rowValues[0])
active.deleteRow(rowStart);
var calendarId = calendarStaff4Id;
addEvent(calendarId);

}

if ( value == "REJECTED" ) { // Change to the value that will trigger the move
var rowValues = active.getRange( rowStart + ':' + rowStart ).getValues(); // Entire row
e.source.getSheetByName("Rejected").appendRow(rowValues[0]) // Change to your "move to" sheet name
active.deleteRow(rowStart);
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Rejected").activate();

Browser.msgBox("Please contact client to let them know that their request cannot be fulfilled");

}
}
}
}

function addEvent(calendarId) {

var startDtId = 7;
var titleId = 2;
var titleId2 = 6;
var descId = 8;
var formTimeStampId = 1;

SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Accepted").activate();

// Switch to sheet Accepted and start the calendar event creation
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Accepted");
var rows = sheet.getDataRange();
var numRows = rows.getNumRows();
var values = rows.getValues();
var lr = rows.getLastRow();
var startDt = sheet.getRange(lr,startDtId,1,1).getValue();
var subOn = "Added :"+sheet.getRange(lr,formTimeStampId,1,1).getValue()+" by: "+sheet.getRange(lr,titleId,1,1).getValue();
var desc = "Comments :"+sheet.getRange(lr,8,1,1);
var title = sheet.getRange(lr,titleId,1,1).getValue()+" - "+sheet.getRange(lr,titleId2,1,1).getValue();
var start = new Date(startDt);
var end = new Date(startDt.valueOf()+60*60*1000);
var loc = 'Central Library';

var cal = CalendarApp.getCalendarById(calendarId);

//Browser.msgBox("Please add the following event into your calendar: " + title + " Start Time: " + start + " End Time: " + end);

var event = cal.createEvent(title, start, end);

};

请帮忙!!我们束手无策。提前致谢。

最佳答案

一个简单的 onEdit() 触发器不能做任何需要授权的事情。谁拥有脚本所在的文档并不重要;如果它是一个简单的触发器,那么它就是匿名的。

相反,使用 installable trigger . (您可以简单地重命名您的函数,然后按照 Managing Triggers Manually 中的说明进行设置。)

关于javascript - Google Apps 脚本 - createEvent 函数不创建日历事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27177990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com