Google Calendar: Move Event to another Calendar

Google カレンダー: 予定のカレンダー移動

This item moves an event on Google Calendar to another calendar.

Auto Step icon
Basic Configs
Step Name
Configs for this Auto Step
C1: User connects to Google Calendar (must be App Administrator) *
C2: Calendar ID of the current event (Primary Calendar if blank)
C3: Destination Calendar ID (Primary Calendar if blank)
C4: Event ID *
C5: Data item to save Event URL


  • Users in C1 need to have a configured connection with Google Calendar in [Account Settings] > [Google Connectivity]
    • Google Workspace Connectivity ([System Settings] > [Google Connectivity]) must be enabled on the workflow platform ([System Administrator Authorization] required)
  • Refer to the following page for Calendar ID. [Calendar Settings] > [Calendar Address]
  • Event ID can’t be found in Calendar Page. You should use one from a task such as Start: Google Calendar: Event Started


See also

Script (click to open)
  • An XML file that contains the code below is available to download
    • google-calendar-event-move.xml (C) Questetra, Inc. (MIT License)
    • If you are using Professional, you can modify the contents of this file and use it as your own add-on auto step


function main() {
    //// == 工程コンフィグの参照 / Config Retrieving ==
    const quser = configs.getObject("conf_User");
    if (quser === null) {
        throw `User not found.`;
    const calendarId = getCalendarId("conf_CalendarId");
    const destination = getCalendarId("conf_Destination");

    const eventId = engine.findData(configs.getObject("conf_EventId"));
    if (eventId === "" || eventId === null) {
        throw "Event ID isn't set.";

    const htmlLinkDataDef = configs.getObject("conf_htmlLink");

    const calIdRegex = /^[\w\-_.!*'@]+$/;
    //// == 演算 / Calculating ==
    if ( === -1) {
        throw "Invalid Destination Calendar ID.";

    if ( === -1) {
        throw "Invalid Source Calendar ID.";

    moveEvent(quser, calendarId, eventId, destination);
    getHtmlLink(quser, destination, eventId, htmlLinkDataDef);

 * configs から カレンダー ID を取得する
 * @param confName 設定名
 * @returns {string} カレンダー ID
function getCalendarId(confName) {
    let calendarId = configs.get(confName);
    if (calendarId === "" || calendarId === null) {
        return "primary";
    return calendarId;

 * Google カレンダーのイベントを別のカレンダーに移動する
 * @param {QuserView} quser ユーザー
 * @param {String} calendarId カレンダーID
 * @param {String} eventId 予定ID
 * @param {String} destination 移動先カレンダーID
function moveEvent(quser, calendarId, eventId, destination) {

    const uri = `${calendarId}/events/${eventId}/move`;

    const myObj = {};
    myObj.destination = destination;

    const response = httpClient.begin()
        .googleOAuth2(quser, "Calendar")
        .body(JSON.stringify(myObj), "application/json")

    const status = response.getStatusCode();
    const responseStr = response.getResponseAsString();
    engine.log(`Event ID: ${eventId}`);
    if (status >= 300) {
        engine.log(`Status: ${status}`);
        throw `Failed to move.`;
    engine.log('Succeeded to move.');

 * イベントを再取得し、HTML Link を保存する
 * @param quser
 * @param calendarId
 * @param eventId
 * @param htmlLinkDataDef
function getHtmlLink(quser, calendarId, eventId, htmlLinkDataDef) {
    if (htmlLinkDataDef === null) {
    const uri = `${calendarId}/events/${eventId}`;

    const response = httpClient.begin()
        .googleOAuth2(quser, "Calendar")

    const status = response.getStatusCode();
    const responseStr = response.getResponseAsString();
    if (status >= 300) {
        engine.log(`Status: ${status}`);
        throw `Failed to get htmlLink.`;
    const respJson = JSON.parse(responseStr);
    const htmlLink = respJson['htmlLink'];
    engine.setData(htmlLinkDataDef, htmlLink);
    engine.log("Succeeded to get htmlLink");

1 thought on “Google Calendar: Move Event to another Calendar”

  1. Pingback: Start Processes from Appointments in Google Calendar – Questetra Support

Comments are closed.

%d bloggers like this: