我今年早些时候创建了一个脚本,用于从电子表格行创建日历事件,将其放在共享的家庭日历和我自己的辅助日历上。
它在今年早些时候运行良好,但现在不是添加到辅助日历,而是仅添加到我的默认日历中,我根本没有编写到脚本中。
根据ID调用日历的语法是否有所改变?
//push new events to calendar
function pushToCalendar() {
//spreadsheet variables
var book = SpreadsheetApp.getActiveSpreadsheet();
var now = new Date();
var currentYear = Utilities.formatDate(new Date(now.getTime()), 'America/Chicago', 'yyyy');
var currentSheet = ("Events" + " " + currentYear);
var sheet = book.getSheetByName(currentSheet);
var lastRow = sheet.getLastRow();
var lastCol = sheet.getLastColumn();
var range = sheet.getRange(2,1,lastRow,lastCol);
var values = range.getValues();
//calendar variables
var calendar = CalendarApp.getCalendarById('sample1@group.calendar.google.com');
var calendarShared = CalendarApp.getCalendarById('sample2@group.calendar.google.com');
var numValues = 0;
for (var i = 0; i < values.length; i++) {
//check to see if values 0,1,3,4,5,6 are filled out
if ((values[i][0]) && (values[i][1]) && (values[i][3]) && (values[i][4]) && (values[i][5]) && (values[i][6]))
{
//check if it's been entered before (values[i][8] = '')||(values[i][8] = null)
if (values[i][7].toString().toLowerCase() !== 'y') {
//create event https://developers.google.com/apps-script/class_calendarapp#createEvent
var newEventTitle = 'Game: ' + values[i][0] + ' - ' + values[i][1];
var newSharedTitle = 'Adam - Game: ' + values[i][0] + ' - ' + values[i][1];
var startDay = Utilities.formatDate(new Date(values[i][3]), 'America/Chicago', 'MMMM dd, yyyy');
var startTime = Utilities.formatDate(new Date(values[i][4]), 'America/Chicago', 'HH:mm');
var start = startDay + ' ' + startTime;
var endDay = Utilities.formatDate(new Date(values[i][5]), 'America/Chicago', 'MMMM dd, yyyy');
var endTime = Utilities.formatDate(new Date(values[i][6]), 'America/Chicago', 'HH:mm');
var end = endDay+ ' ' + endTime;
var details = values[i][9] + ' - $' + values[i][10] + '\n' + '\n' + 'Crew: ' + '\n' + values[i][14] + '\n' + values[i][15] + '\n' + values[i][16] + '\n' + '\n' +'Assessor:' + '\n' + values[i][17];
//new event on Secondary AND Shared Calendar
var newEvent = calendar.createEvent(newEventTitle, new Date(start), new Date(end), {location: values[i][13], description: details});
var newSharedEvent = calendarShared.createEvent(newSharedTitle, new Date(start), new Date(end), {location: values[i][13], description: details});
//get ID
var newEventId = newEvent.getId();
//mark as entered, enter ID
sheet.getRange(i+2,8).setValue('y');
sheet.getRange(i+2,9).setValue(newEventId);
}
else;
}
numValues++;
}
提前感谢您的帮助!
答案 0 :(得分:0)
尝试创建活动,然后将其插入您的日历,如下所示:
unit SQLUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, stdctrls, ADODB, DB, comobj;
type
TSQLWork = class(TForm)
ADOQuery: TADOQuery;
ADOConnection: TADOConnection;
ADOCommand: TADOCommand;
Button1: TButton;
procedure createtables;
procedure createdatabase;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
SQLWork: TSQLWork;
implementation
{$R *.dfm}
procedure TSQLWork.createtables;
begin
showmessage('Tables being created');
ADOCommand.CommandText:='CREATE TABLE Student (StudentID real, '+
'StudentName char(30), primary key(StudentID))';
ADOCommand.Execute;
showmessage('Tables created!');
end;
procedure TSQLWork.Button1Click(Sender: TObject);
begin
createdatabase;
end;
procedure TSQLWork.createdatabase;
var dbase:OLEVariant;
name:string;
begin
name:='Test5.accdb';
if not fileexists(name) then
begin
showmessage('DOES NOT EXIST CONFIRMED');
dbase:=CreateOleObject('ADOX.Catalog');
dbase.create('Provider=Microsoft.ACE.OLEDB.12.0;Data Source='+name+';');
dbase:=null;
showmessage('CREATED CONFIRMED');
createtables;
end
else
showmessage('EXISTS CONFIRMED');
ADOCommand.ConnectionString:='Provider=Microsoft.ACE.OLEDB.12.0;Data Source='+name+';';
showmessage('CONNECTED');
end;
end.
答案 1 :(得分:0)
我也遇到了同样的 ID 问题......显然你需要摆脱事件 ID 本身的 @google.com 部分,然后将其作为数组的一部分
.getId().split('@')[0];
只需添加此代码,它对我来说就像一个魅力