對 Google Apps 腳本有點陌生。我正在嘗試從 GoogleSheet 創建 Google 日歷活動。它不會透露我正在使用某人的答案,其中一些答案來自stackoverflow。不幸的是,我還沒有找到我的問題的完整答案。或者如果有我無法重新創建它:)
谷歌表格
那是我正在使用的谷歌表格(試圖制作一個可以跟蹤交貨的運輸日歷)。標記為 0 的列不用于制作日歷事件,只有標記為 1 的列。例如日歷事件中應包含的內容: 標題:LH-19/22 /描述:司機 1 手機:1234567890 /日期:2022-05-16
注意:日期可能會更改為帶小時的開始/結束日期。(2022-05-16 06:00 - 2022-5-16 07:00)。另外,我提到了我沒有使用的“描述”,但我會試一試,而我將“.createAllDayEvent”更改為“.createEvent”,這就是為什么還有評論“DATA_2”。
現在,它創建了一個事件,但我無法弄清楚如何在不重復的情況下更新它。嘗試使用 .deleteEventSeries() 并更新它,還嘗試使用觸發器 onEdit() 但仍然沒有運氣。
這是我用來向日歷添加事件的代碼:
function initMenu() {
var ui = SpreadsheetApp.getUi();
var menu = ui.createMenu('SPEDYCJA')
menu.addItem('DODAJ DO KALENDARZA','DodanieSpedycjiDoKalendarza')
menu.addItem('AKTUALIZUJ KALENDARZ','AktualizacjaWydarzenia')
menu.addToUi();
}
function onOpen() {
initMenu();
}
function DodanieSpedycjiDoKalendarza() {
var ui = SpreadsheetApp.getUi();
var WcisnietyPrzycisk = ui.alert("Czy na pewno chcesz uruchomi? skrypt??",ui.ButtonSet.YES_NO);
if (WcisnietyPrzycisk == ui.Button.YES) {
let AktywnyArkusz = SpreadsheetApp.getActiveSheet();
let KalendarzSpedycja = CalendarApp.getCalendarById("[email protected]");
let TabelaDanych = AktywnyArkusz.getRange(12,8,8,9).getValues();
for (let x=0; x<TabelaDanych.length; x ) {
const ZMIANA = TabelaDanych[x];
const TYTU? = ZMIANA[0];
const DATA_1 = ZMIANA[7];
//const DATA_2 = ZMIANA[14];
const ID_Wydarzenia = ZMIANA[8];
if (ID_Wydarzenia == "") {
const NoweWydarzenie = KalendarzSpedycja.createAllDayEvent(TYTU?,DATA_1);
const ID_NoweWydarzenie = NoweWydarzenie.getId();
AktywnyArkusz.getRange(8 x,8).setValue(ID_NoweWydarzenie);
}
try {
var event = KalendarzSpedycja.getEventSeriesById(ID_Wydarzenia);
event.deleteEventSeries();
//entry[9] = '';
} catch(e) {
//nie rób nic
}
var newEvent = KalendarzSpedycja.createAllDayEvent(TYTU?,DATA_1);
// entry[9] = newEvent;
debugger;
}
ui.alert("Dodano spedycje do kalendarza!")
} else if (WcisnietyPrzycisk == ui.Button.NO) {
ui.alert("Nie uruchomi?e? skryptu.");
}
}
另外,我嘗試使用觸發器 onEdit() 的示例代碼,而在我沒有使用“try { .deleteEventSeries() }”的主函式中,只有回圈但仍然失敗..
function AktualizacjaWydarzenia(e) {
var ZaktualizowaneWiersze = e.range.getRange();
var ZaktualizowaneDane = e.source.getActiveSheet().getRange(ZaktualizowaneWiersze, 8, 8, 9).getValues()[4];
var ID_ZaktualizowaneWydarzenie = ZaktualizowaneDane[9]
try {
var Wydarzenie = CalendarApp.getEventById(ID_ZaktualizowaneWydarzenie);
ID_ZaktualizowaneWydarzenie.setTitle(ZaktualizowaneDane[1]);
ID_ZaktualizowaneWydarzenie.setDate(ZaktualizowaneDane[8]);
} catch(err) {
console.log("Wyst?pi? b??d podczas aktualizowania wydarzeń do kalendarza. Konkretne wydarzenie mo?e jeszcze nie istnie?.");
}
}
我將非常感激有人將用代碼粘貼答案并指出我/批評現有的我做錯了什么。
感謝您有一個愉快的一天。
uj5u.com熱心網友回復:
為了防止重復,
您需要在創建該事件時將事件 ID 保存在一列中。然后,如果你想更新,你必須考慮這個 id。
參考
設定時間(開始時間,結束時間)
嘗試
function AktualizacjaWydarzenia(ID_Wydarzenia,TYTU?,DATA_1,DATA_2) {
var Wydarzenie = CalendarApp.getEventById(ID_ZaktualizowaneWydarzenie);
Wydarzenie.getEventById(ID_Wydarzenia).setTitle(TYTU?)
Wydarzenie.getEventById(ID_Wydarzenia).setTime(DATA_1,DATA_2)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/479335.html
標籤:谷歌应用脚本
