カレンダーからイベントの詳細を取得してスプレッドシートの列AとBに追加し、重複するイベントを削除して、日付に基づいて並べ替えるスクリプトを使用しています。私の希望は、スタッフにこれらのイベントに関する追加データを列C、Dなどに追加してもらうことです。
これは正常に機能しているようですが、C、D列に情報が追加されると、インポートされているコンテンツだけでなく行全体を比較しているため、スクリプトの重複排除機能は機能しなくなります。
行が重複していて削除する必要があるかどうかを判断するときに、列AとBのみをチェックするように、以下の重複排除スクリプトを調整する方法はありますか?
この記事のバリエーションセクションにある以下のコード(現在コメントアウトされている)調整を使用しようとしました:https ://developers.google.com/apps-script/articles/removing_duplicates-それでも機能しないようです。
助けてくれてありがとう
スクリプト:
enter code here
//this section retrieves the information from a calendar from a user submitted date until the end of the year
function importEvents(){
var calID = Browser.inputBox("Please enter your google Cal ID", Browser.Buttons.OK_CANCEL);
var startdate = Browser.inputBox("Start date using 1/1/2013 format", Browser.Buttons.OK_CANCEL);
var cal = CalendarApp.getCalendarById(calID);
var events_sheet = SpreadsheetApp.getActiveSheet();
var events = cal.getEvents(new Date(startdate), new Date("1/1/2014"));
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].getStartTime());
line.push(events[i].getTitle());
//Potential more data that I am not getting at this time
// line.push(events[i].getDescription());
// line.push(events[i].getEndTime());
eventarray.push(line);
}
events_sheet.getRange("A"+(lr+1)+":B"+(lr+i)).setValues(eventarray);
//sort ascending dy date
var range = SpreadsheetApp.getActiveSheet().getRange("A3:F2000");
range.sort([{column: 1, ascending: true}]);
//removes duplicate rows
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var newData = new Array();
for(i in data){
var row = data[i];
var duplicate = false;
for(j in newData){
if(row.join() == newData[j].join()){
duplicate = true;
//This was supposed to only check the first 2 columns, but it doesn't work
//I found this code in the variation section of this tutorial: https://developers.google.com/apps-script/articles/removing_duplicates
//
// if(row[0] == newData[j][0] && row[1] == newData[j][1]){
// duplicate = true;
}
}
if(!duplicate){
newData.push(row);
}
}
sheet.clearContents();
sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
}