【问题标题】:How to send a meeting request using Google-api and nodejs?如何使用 Google-api 和 nodejs 发送会议请求?
【发布时间】:2017-10-11 18:50:45
【问题描述】:

我正在尝试向 gmail 发送会议请求,并使用 googleapis 和 google-auth-library 库将其注册或存储在 google 日历中。 我可以将事件发送到谷歌日历,但我无法将该事件作为邮件发送。那么任何人都可以帮助我如何做到这一点。我用不同的选项尝试了下面的代码,但它不起作用。

var fs = require('fs');
var readline = require('readline');
var google = require('googleapis');
var googleAuth = require('google-auth-library');
const moment = require('moment');

var SCOPES = ['https://www.googleapis.com/auth/calendar'];
var TOKEN_DIR = (process.env.HOME || process.env.HOMEPATH ||
    process.env.USERPROFILE) + '/.credentials/';
var TOKEN_PATH = TOKEN_DIR + 'calendar-nodejs-quickstart.json';

fs.readFile('client_secret.json', function processClientSecrets(err, content) {
    if (err) {
        console.error('Error loading client secret file: ' + err);
        return;
    } else {
        authorize(JSON.parse(content), createEvents);
    }
});

function authorize(credentials, callback) {
    var clientSecret = credentials.installed.client_secret;
    var clientId = credentials.installed.client_id;
    var redirectUrl = credentials.installed.redirect_uris[0];
    var auth = new googleAuth();
    var oauth2Client = new auth.OAuth2(clientId, clientSecret, redirectUrl);
    fs.readFile(TOKEN_PATH, function(err, token) {
        if (err) {
            getNewToken(oauth2Client, callback);
        } else {
            oauth2Client.credentials = JSON.parse(token);
            callback(oauth2Client);
        }
    });
}

function getNewToken(oauth2Client, callback) {
    var authUrl = oauth2Client.generateAuthUrl({
        access_type: 'offline',
        scope: SCOPES
    });
    var rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout
    });
    rl.question('Enter the code from that page here: ', function(code) {
        rl.close();
        oauth2Client.getToken(code, function(err, token) {
            if (err) {
                console.error('Error while trying to retrieve access token', err);
                return;
            }
            oauth2Client.credentials = token;
            storeToken(token);
            callback(oauth2Client);
        });
    });
}
function storeToken(token) {
    try {
        fs.mkdirSync(TOKEN_DIR);
    } catch (err) {
        if (err.code != 'EEXIST') {
            throw err;
        }
    }
    fs.writeFile(TOKEN_PATH, JSON.stringify(token));
}
function createEvents(authClient) {
    var calendar = google.calendar('v3');
    calendar.events.insert({
        auth: authClient,
        calendarId: "primary",
        resource: {
            start: {
                dateTime: moment().add(1, "m").format(),
                timeZone: "America/New_York"
            },
            end: {
                dateTime: moment().add(3, "m").format(),
                timeZone: "America/New_York"
            },
            attendees: [
                { email: "***********************" }
            ],
            reminders: {
                useDefault: false,
                overrides: [
                    { method: "email", minutes: 1 },
                    { method: "popup", minutes: 1 }
                ]
            },
            summary: "Testing google apis",
            description: "Testing apis "
        }
    }, function(err, something) {
        if (err) {
            console.error(err);
        } else {
            console.log(something);
        }
    });
}

【问题讨论】:

    标签: node.js google-api google-calendar-api google-api-js-client


    【解决方案1】:

    Create Events 解释了如何创建日历事件并将其添加到用户的日历中。

    要使用nodejs创建或添加事件,可以使用documentation中提供的代码:

    // Refer to the Node.js quickstart on how to setup the environment:
    // https://developers.google.com/google-apps/calendar/quickstart/node
    // Change the scope to 'https://www.googleapis.com/auth/calendar' and delete any
    // stored credentials.
    
    var event = {
      'summary': 'Google I/O 2015',
      'location': '800 Howard St., San Francisco, CA 94103',
      'description': 'A chance to hear more about Google\'s developer products.',
      'start': {
        'dateTime': '2015-05-28T09:00:00-07:00',
        'timeZone': 'America/Los_Angeles',
      },
      'end': {
        'dateTime': '2015-05-28T17:00:00-07:00',
        'timeZone': 'America/Los_Angeles',
      },
      'recurrence': [
        'RRULE:FREQ=DAILY;COUNT=2'
      ],
      'attendees': [
        {'email': 'lpage@example.com'},
        {'email': 'sbrin@example.com'},
      ],
      'reminders': {
        'useDefault': false,
        'overrides': [
          {'method': 'email', 'minutes': 24 * 60},
          {'method': 'popup', 'minutes': 10},
        ],
      },
    };
    
    calendar.events.insert({
      auth: auth,
      calendarId: 'primary',
      resource: event,
    }, function(err, event) {
      if (err) {
        console.log('There was an error contacting the Calendar service: ' + err);
        return;
      }
      console.log('Event created: %s', event.htmlLink);
    });
    

    您可以选择在创建日历时添加活动元数据 事件。如果您选择在创建过程中不添加元数据,您可以 使用events.update() 更新许多字段;然而,有些 字段,例如事件 ID,只能在 events.insert() 操作。

    您还可以使用实时数据查看try it 中的 API 请求和响应。

    【讨论】:

    • 是否有任何选项可以创建谷歌会议链接并添加邀请?
    猜你喜欢
    • 2012-07-09
    • 2023-03-04
    • 1970-01-01
    • 2017-10-31
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2023-01-01
    • 2016-12-15
    相关资源
    最近更新 更多