gpt4 book ai didi

google-apps-script - 表单提交处理程序创建重复的 Google 日历事件

转载 作者:行者123 更新时间:2023-12-02 20:34:44 24 4
gpt4 key购买 nike

我修改了 this question 中的代码以满足我的需要。我使用填充到 Google 表格中的 Google 表单,然后脚本将一个事件插入到 Google 日历中。我已经安装了“表单提交”触发器来执行脚本。我遇到的问题是,我的代码从工作表第一行中的数据开始,每次添加新的表单响应时都会添加相同的事件。

这是我的版本:

//push new events to calendar
function pushToCalendar() {
//spreadsheet variables
var sheet = SpreadsheetApp.getActiveSheet();
var lastRow = sheet.getLastRow();
var range = sheet.getRange(2,1,lastRow,16);
var values = range.getValues();

//calendar variables
var defaultCalendar = CalendarApp.getDefaultCalendar()

var numValues = 0;
for (var i = 0; i < values.length; i++) {
//check to see if Start DateTime and End DateTime are filled out
if ((values[i][3]) && (values[i][4])) {
//check if it's been entered before
if (values[i][6] != 'y') {
//create event https://developers.google.com/apps-script/class_calendarapp#createEvent
var newEventTitle = values[i][1] + ' - ' + values[i][2];
var startDay = Utilities.formatDate(new Date(values[i][3]), "GMT", "yyyy-MM-dd'T'HH:mm:ss'Z'");
var endDay = Utilities.formatDate(new Date(values[i][4]), "GMT", "yyyy-MM-dd'T'HH:mm:ss'Z'");
var newEvent = defaultCalendar.createEvent(newEventTitle, new Date(startDay), new Date(endDay), {location: values[i][2]});
//get ID
var newEventId = newEvent.getId();

//mark as entered, enter ID
sheet.getRange(i + 2, 6).setValue('y');
sheet.getRange(i + 2, 7).setValue(newEventId);
}
}

numValues++;
}
}

最佳答案

我自己找到了解决方案:在第20行我更改了代码

if (values[i][6] != 'y') { 

if (!values[i][6]) {

不需要写'y'符号。我也变了

sheet.getRange(i+2,6).setValue('y');

至 sheet.getRange(i+2,6).setValue('');

并且不再重复。代码完美运行!

关于google-apps-script - 表单提交处理程序创建重复的 Google 日历事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45812422/

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