-1

Googleフォームを作成しました。このフォームは自動的にカレンダーエントリが作成されるGoogleシートに送られます。しかし、私は自分のシートからゲストを招待する方法を理解することができません。私はそれを徹底的に探知し、類似の解決策を見つけましたherehereですが、そのコードは私のコードとはかなり異なるので、どのように自分のコードに適用するか分かりません。しかしGoogle Script - Googleシートからカレンダーイベントにゲストを追加する

//insert your google calendar ID 
var calendarId = "CALENDARID"; 

//index (starting from 1) of each column in the sheet 
var titleIndex = 4; 
var descriptionIndex = 7; 
var startDateIndex = 5; 
var endDateIndex = 6; 
var googleCalendarIndex = 10; 
var locationIndex = 8; 
var mainGuestIndex = 2; 

/* 
find the row where the Google Calendar Event ID is blank or null 
The data of this row will be used to create a new calendar event 
*/ 
function findRow(sheet) 
{ 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var dataRange = sheet.getDataRange(); 
    var values = dataRange.getValues(); 

    for (var loopCounter = 0; 
      loopCounter < values.length; 
      loopCounter++) 
    { 
     if (values[ loopCounter ][ googleCalendarIndex - 1 ] == "" || 
      values[ loopCounter ][ googleCalendarIndex - 1 ] == null) 
      newEvent(i + 1); 
    } 
}; 

/* 
get the data of the new row by calling getSheetData() and 
create a new Calendar event by calling submitToGoogleCalendar() 
*/ 

function newEvent(row) 
{ 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var eventId = submitToGoogleCalendar(getSheetData(sheet,row),null) 

    if (eventId != null) 
     sheet.getRange(row, 
         googleCalendarIndex, 
         1, 
         1).setValue(eventId); 
}; 

/* 
Store the data of a row in an Array 
*/ 

function getSheetData(sheet,row) 
{ 
    var data = new Array(); 

    data.title = sheet.getRange(row, 
           titleIndex, 
           1, 
           1).getValue(); 

    data.description = sheet.getRange(row, 
             descriptionIndex, 
             1, 
             1).getValue(); 

    data.startDate = sheet.getRange(row, 
            startDateIndex, 
            1, 
            1).getValue(); 

    data.endDate = sheet.getRange(row, 
            endDateIndex, 
            1, 
            1).getValue(); 

    data.location = sheet.getRange(row, 
            locationIndex, 
            1, 
            1).getValue(); 

    data.mainGuest = sheet.getRange(row, 
            mainGuestIndex, 
            1, 
            1).getValue(); 

    return data; 
}; 

/* 
if a cell is edited in the sheet, get all the data of the corresponding row and 
create a new calendar event (after deleting the old event) by calling submitToGoogleCalendar() 
*/ 

function dataChanged(event) 
{ 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var row = event.range.getRow(); 

    var eventId = sheet.getRange(row, 
            googleCalendarIndex, 
            1, 
            1).getValue(); 

    var eventId = submitToGoogleCalendar(getSheetData(sheet, 
                 row), 
              eventId); 

    if (eventId != null) 
     sheet.getRange(row, 
         googleCalendarIndex, 
         1, 
         1).setValue(eventId); 
}; 

/* 
This function creates an event in the Google Calendar and returns the calendar event ID 
which is stored in the last column of the sheet 
*/ 

function submitToGoogleCalendar(sheetData, 
           eventId) 
{ 
    // some simple validations ;-) 
    if (sheetData.title == "" || 
     sheetData.startDate == "" || 
     sheetData.startDate == null) 
     return null; 

    var cal = CalendarApp.getCalendarById(calendarId); 
    var start = new Date(sheetData.startDate); 
    var end = new Date(sheetData.endDate); 

    // some simple date validations 
    if (start > end) 
     return null; 

    var event = null; 

    //if eventId is null (when called by newEvent()) create a new calendar event 
    if (eventId == null) 
    { 
     event = cal.createEvent(sheetData.title, 
           start, 
           end, 
           { 
            description : sheetData.description, 
            location : sheetData.location, 
           }).addGuest(sheetData.mainGuest); 

     return event.getId(); 
    } 

    /* 
    else if the eventid is not null (when called by dataChanged()), delete the calendar event 
    and create a new event with the modified data by calling this function again 
    */ 

    else 
    { 
     event = cal.getEventSeriesById(eventId); 
     event.deleteEventSeries(); 
     return submitToGoogleCalendar(sheetData, 
             null); 
    } 

    return event.getId(); 
}; 

、私はこれを実行すると、それはイベントになりますが、まだゲストがカレンダーイベントに現れなかっ:

これは私の最新の試みです。 hereから私は.addGuest(email)を使用する必要があることを知っています、それは私のsubmitToGoogleCalendar機能に入るべきであるように思えます、それはイベントの他のすべての情報があるところですが、これまで運がありません。また、イベント変数のイベントにタックするのではなく、event.addGuest(sheetData.mainGuest);を追加しようとしましたが、それもうまくいきませんでした。

スクリプトを完全に書き換えずに追加するにはどうすればよいですか?私は正しい道にここにいますか?

+0

https://developers.google.com/apps-script/reference/calendar/calendar-([ '' addGuest(電子メール)]を使用するようにしてくださいイベント#addGuest(String))パラメータと有効な電子メールアドレスを指定します。例えば。 'addGuest([email protected])'をチェックし、それが動作することを確認してください。これは、Appsスクリプトを使用してゲストを追加する唯一の方法だからです。アプリスクリプトでカレンダーを使用する方法を知るには、この[link](https://developers.google.com/apps-script/reference/calendar/)をチェックしてください。また、この[SO質問](http://stackoverflow.com/questions/40842714)をチェックして、ユーザーが彼のコードにゲストを追加する方法を知ってください。 – KENdi

答えて

0

ロケーションに高度なオプションとして含める必要があります。 sendInvitesは、ゲストに電子メールを送るためにtrueまたはfalseの値を持つ4番目のオプションです。

​​

event = cal.createEvent(sheetData.title, 
 
           start, 
 
           end, 
 
           { 
 
            description : sheetData.description, 
 
            location : sheetData.location, 
 
            guests  : sheetData.mainGuest, 
 
            sendInvites : true 
 
           });

関連する問題