Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script Google脚本-从Google工作表中的单个单元格向日历事件添加多个来宾_Google Apps Script_Google Api - Fatal编程技术网

Google apps script Google脚本-从Google工作表中的单个单元格向日历事件添加多个来宾

Google apps script Google脚本-从Google工作表中的单个单元格向日历事件添加多个来宾,google-apps-script,google-api,Google Apps Script,Google Api,我有一个谷歌电子表格,我们正在使用它向多个帐户发送单个日历事件。代码如下。每当我试图从中提取的单元格中有多个电子邮件地址时,.addguest就会出现“无效参数”错误(用逗号分隔) 如果单元格中只有一个帐户,但如果同一单元格中有多个帐户以逗号列出,则以下代码将正确提取 所有想法都受到赞赏 谢谢大家! --德鲁 函数onOpen(){ var s=SpreadsheetApp.getActiveSpreadsheet(); var menuEntries=[{name:“将事件添加到谷歌日历”,f

我有一个谷歌电子表格,我们正在使用它向多个帐户发送单个日历事件。代码如下。每当我试图从中提取的单元格中有多个电子邮件地址时,.addguest就会出现“无效参数”错误(用逗号分隔)

如果单元格中只有一个帐户,但如果同一单元格中有多个帐户以逗号列出,则以下代码将正确提取

所有想法都受到赞赏

谢谢大家!

--德鲁

函数onOpen(){ var s=SpreadsheetApp.getActiveSpreadsheet(); var menuEntries=[{name:“将事件添加到谷歌日历”,functionName:“scheduleClass”}]; s、 添加菜单(“谷歌日历功能”,菜单); } 函数scheduleClass(){ var sheet=SpreadsheetApp.getActiveSheet(); var calendar=CalendarApp.getCalendarById(“primary@group.calendar.google.com"); var title=sheet.getRange('A2:A').getValues(); var startTime=sheet.getRange('E2:E').getValues(); var endTime=sheet.getRange('F2:F').getValues(); var theDescription=sheet.getRange('G2:G').getValues(); var theLocation=sheet.getRange('H2:H').getValues(); var theGuests=sheet.getRange('K2:K').getValues(); 对于(变量i=0;i
  • 您希望创建具有多个来宾的日历事件。
    • 在您的情况下,“K”列的值类似于
      sample1@gmail.com,sample2@gmail.com
      分隔
    • 活动工作表中“A”、“E”、“F”、“G”、“H”和“K”列的值分别为标题、开始时间、结束时间、描述、位置和来宾
如果我的理解是正确的,那么这个答案呢?请把这看作是几个可能的答案之一

修改点:
  • 当来宾被
    隔开时,您可以使用
    split()
    检索每封电子邮件。并且可以使用
    addGuest(email)
    添加它们
  • 在脚本中,
    for(var i=0;ititle.length+1
    在循环中发生错误
  • 当您从“A2:K#”的数据范围中检索值时,可以降低流程成本。和讨论中提到了这一点
当这些点反映到脚本中时,它将变成如下所示

模式1: 在此模式中,使用了
CalendarApp
的日历服务。在这种情况下,修改了
scheduleClass()

修改脚本:
函数调度类(){
var sheet=SpreadsheetApp.getActiveSheet();
var calendar=CalendarApp.getCalendarById(“primary@group.calendar.google.com");
var values=sheet.getRange(2,1,sheet.getLastRow()-1,11).getValues();
对于(变量i=0;i
模式2: 在此模式中,使用日历API

修改脚本: 使用此脚本时

函数调度类(){
var sheet=SpreadsheetApp.getActiveSheet();
var calendarId=”primary@group.calendar.google.com";
var values=sheet.getRange(2,1,sheet.getLastRow()-1,11).getValues();
对于(变量i=0;i
注:
  • 以上两个修改脚本的结果相同
参考资料:
如果我误解了你的问题,而这不是你想要的方向,我道歉。

  • 您希望创建具有多个来宾的日历事件。
    • 在您的情况下,“K”列的值类似于
      sample1@gmail.com,sample2@gmail.com
      分隔
    • 活动工作表中“A”、“E”、“F”、“G”、“H”和“K”列的值分别为标题、开始时间、结束时间、描述、位置和来宾
如果我的理解是正确的,那么这个答案呢?请把它看作是几种可能的答案之一

修改点:
  • 当来宾之间用
    分隔时,您可以使用
    split()
    检索每封电子邮件,并且可以使用
    addGuest(email)
    添加它们
  • 在脚本中,
    for(var i=0;ititle.length+1
    在循环中发生错误
  • 当您从“A2:K#”的数据范围中检索值时,可以降低流程成本。和讨论中提到了这一点
当这些点反映到脚本中时,它将变成如下所示

模式1: 在此模式中,使用了
CalendarApp
的日历服务。在这种情况下,修改了
scheduleClass()

修改脚本:
函数调度类(){
var sheet=SpreadsheetApp.getActiveSheet();
var calendar=CalendarApp
 function onOpen() {
 var s = SpreadsheetApp.getActiveSpreadsheet();
  var menuEntries = [ {name: "Add Events to Google Calendar", functionName: "scheduleClass"}];
   s.addMenu("Google Calendar Functions", menuEntries);
 }

function scheduleClass(){
  var sheet = SpreadsheetApp.getActiveSheet();
  var calendar = CalendarApp.getCalendarById("primary@group.calendar.google.com");

  var title = sheet.getRange('A2:A').getValues();
  var startTime = sheet.getRange('E2:E').getValues();
  var endTime = sheet.getRange('F2:F').getValues();
  var theDescription = sheet.getRange('G2:G').getValues();
  var theLocation = sheet.getRange('H2:H').getValues();
  var theGuests = sheet.getRange('K2:K').getValues();

  for(var i = 0; i < title.length+1; i++){
    if(title[i][0] != ""){
      calendar.createEvent(title[i][0], startTime[i][0], endTime[i][0]).addGuest(theGuests[i][0]).setLocation(theLocation[i][0]).setDescription(theDescription[i][0]);

    }
  }
}

function toString(value){
  var newString = "" + value;
  return newString;
}
function scheduleClass(){
  var sheet = SpreadsheetApp.getActiveSheet();
  var calendar = CalendarApp.getCalendarById("primary@group.calendar.google.com");
  var values = sheet.getRange(2, 1, sheet.getLastRow() - 1, 11).getValues();
  for(var i = 0; i < values.length; i++){
    var [title,,,,startTime,endTime,theDescription,theLocation,,,theGuests] = values[i];
    if(title != "") {
      var event = calendar.createEvent(title, startTime, endTime)
        .setLocation(theLocation)
        .setDescription(theDescription);
      theGuests.split(",").forEach(function(e) {event.addGuest(e.trim())});
    }
  }
}
function scheduleClass(){
  var sheet = SpreadsheetApp.getActiveSheet();
  var calendarId = "primary@group.calendar.google.com";
  var values = sheet.getRange(2, 1, sheet.getLastRow() - 1, 11).getValues();
  for(var i = 0; i < values.length; i++){
    var [title,,,,startTime,endTime,theDescription,theLocation,,,theGuests] = values[i];
    if(title != "") {
      var resource = {
        start: {dateTime: startTime.toISOString()},
        end: {dateTime: endTime.toISOString()},
        summary: title,
        description: theDescription,
        location: theLocation,
        attendees: theGuests.split(",").map(function(e) {return {email: e.trim()}})
      };
      Calendar.Events.insert(resource, calendarId);
    }
  }
}