1

イベントのリストを含むスプレッドシートがありますが、それらをそれぞれのカレンダーに挿入する必要があります。これまでのところ、私はこれを持っています:

function pushCalendars() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheets = ss.getSheets();
  for (i in sheets){
    if (sheets.length >  1){
    var lastRow = sheets[i].getLastRow();
    var range = sheets[i].getRange(3,1,lastRow,100);
    var data = range.getValues();
    for (i in data){
      var row = data[i];
      var title = row[0];
      var title2 = row[1];
      var date = row[2];
      var desc = row[3];
      var calName = ss.getSheetByName("Resorts").getRange('E3').getValue();
      var cal = CalendarApp.openByName(calName);
      cal.createAllDayEvent(title,date);
    }
  }
}

解決策があれば教えてください!

4

2 に答える 2

0

カレンダーがユーザーによって所有されている場合、問題は発生しません。コードを変更する必要があるのは、このコードではまだ存在しないカレンダーを作成することだけです。

// Creates a new calendar named "Travel Plans" with a summary and color.
 var calendar = CalendarApp.createCalendar('Travel Plans', {
  summary: 'A calendar to plan my travel schedule.',
   color: CalendarApp.Color.BLUE
 });
 Logger.log('Created the calendar "%s", with the ID "%s".',
     calendar.getName(), calendar.getId());

API ドキュメントはここにあります。

カレンダーが他のユーザーのものである場合、カレンダーを変更するには管理者権限が必要であり、OAuth でログインし、さらに URLFetch を使用してカレンダー API を呼び出す必要があります (カレンダー API はこちらにあります)。

于 2013-11-05T11:39:59.020 に答える
0

カレンダーは既に存在するため、常に ID でカレンダーを取得します。カレンダー設定からカレンダー ID を取得し、それらをプロジェクト プロパティとしてスクリプトに挿入できます。あとは、名前に一致する ID をロードするだけです。

次の 2 行を変更します。

var calName = ss.getSheetByName("Resorts").getRange('E3').getValue();
var cal = CalendarApp.openByName(calName);

これに:

var calName = ss.getSheetByName("Resorts").getRange('E3').getValue();
var calID = ScriptProperties.getProperty(calName);
var cal = CalendarApp.getCalendarByID(calID);

https://developers.google.com/apps-script/guides/properties#scriptPropertiesの ScriptProperties を参照してください。

于 2013-11-06T00:04:12.530 に答える