Javascript 本地时间与谷歌应用程序脚本中的脚本时间和触发时间
脚本时间设置为GMT 00 脚本接受来自用户的日期和时间 用户通过datetime字段设置本地日期时间 用户单击设置按钮 这将在GMT时间创建触发器,如何使其在本地时间触发Javascript 本地时间与谷歌应用程序脚本中的脚本时间和触发时间,javascript,datetime,google-apps-script,datetimepicker,Javascript,Datetime,Google Apps Script,Datetimepicker,脚本时间设置为GMT 00 脚本接受来自用户的日期和时间 用户通过datetime字段设置本地日期时间 用户单击设置按钮 这将在GMT时间创建触发器,如何使其在本地时间触发 function onOpen() { SpreadsheetApp.getUi() // Or DocumentApp or FormApp. .createMenu('Custom Menu').addItem('Show sidebar', 'showSidebar').addToUi(); }
function onOpen() {
SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
.createMenu('Custom Menu').addItem('Show sidebar', 'showSidebar').addToUi();
}
function showSidebar() {
var html = HtmlService.createHtmlOutputFromFile('Sidebar').setTitle('My custom sidebar').setWidth(300);
SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
.showSidebar(html);
}
function sendEmail() {
GmailApp.sendEmail(Session.getEffectiveUser().getEmail(), 'Reminder C Email', 'Reminding you about...');
}
function create(AT) {
SpreadsheetApp.getUi().alert(AT)
var at = moment(AT);
ScriptApp.newTrigger('sendEmail').timeBased().at(new Date(at)).inTimezone(getDefaultUserTimeZone()).create();
}
//script timezone is GMT 00
function getDefaultUserTimeZone() {
if (CalendarApp.getDefaultCalendar()) return CalendarApp.getDefaultCalendar().getTimeZone();
else return 'Etc/GMT';
}
如果访问日历的唯一原因是获取默认时区,那么我不会这样做。您可以从电子表格中获取默认用户时区
ssTimeZone = SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone();
既然您已经在使用电子表格,为什么不直接使用它呢
function create(AT, l)
{
var ssTimeZone;
//SpreadsheetApp.getUi().alert(AT)
var at = moment(AT);
var offsetTime = new Date(new Date(at).getTime() + l * 60 * 1000);
ssTimeZone = SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone();
//showAlert(offsetTime)
ScriptApp.newTrigger('sendEmail').timeBased()
.at(new Date(offsetTime))
.inTimezone(ssTimeZone)
.create();
}