2

データをさらに処理するために、GoogleスプレッドシートにGoogleカレンダーエントリの記録を保持しようとしています。私は他のソースから借りた次のコードを持っています:

function importEvents(){
  var startOfDay = new Date();
      startOfDay.setUTCHours(0);
      startOfDay.setMinutes(0);
      startOfDay.setSeconds(0);
      startOfDay.setMilliseconds(0);  
  var endOfDay = new Date(startOfDay.getTime() + 24 * 60 * 60 * 1000);

  var Calendar = CalendarApp.getCalendarById("[calendarIDhere]");
  var events = Calendar.getEvents(startOfDay, endOfDay)
  var events_sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("ImportedEvents");
  var lr = events_sheet.getLastRow();

  var eventarray = new Array();

  var i = 0; // edited
    for (i = 0; i < events.length; i++) {
      line = new Array();
      line.push(events[i].getTitle());
      line.push(events[i].getDescription());
      line.push(events[i].getStartTime());
      line.push(events[i].getEndTime());
      eventarray.push(line);
    }

    events_sheet.getRange('A1:D' + (i)).setValues(eventarray);

  var l = events_sheet.getLastRow();
  var m = events_sheet.getMaxRows();
  events_sheet.deleteRows(l+1,m-l);
}

何らかの理由で、1日のエントリをインポートするたびに、いくつかの空の行がImportedEventsシートに追加されます。これが、シートの最後にある空の行を削除する理由です。

私がやりたいのは、このスクリプトで、ImportedEventsシートの既存のエントリの下に新しいインポートされたエントリを追加することです。プログラミングスキルが限られているため、これを理解することはできません(ここでも、上記のコードは、他の場所で提供されているソリューションを実装した結果です)。

どんな助けでも大歓迎です!

編集: Lotharの提案に基づいて、私は何か他のものを試しました:

events_sheet.getRange("A"+(lr+1)+":D"+(lr+i)).setValues(eventarray);

そしてそれはうまくいきました!また、深く掘り下げるインセンティブに-1を投票した人には非常に特別な感謝を捧げます。

乾杯!

4

1 に答える 1

4

この行を書き直して、

events_sheet.getRange('A1:D' + (lr)).setValues(eventarray);

新しい(イベント)データをスプレッドシートの最後に追加しようとした場合。それ以外の場合は、取得しているイベントの数に対応する行にデータを配置します。

于 2012-12-12T16:06:41.227 に答える