Have ideas to improve npm?Join in the discussion! »

    google-slides

    2.1.1 • Public • Published

    Build Status

    google-slides

    NPM package for some simple Google Slides operations

    contents

    prerequisites

    • a Google account
    • familiarity with Node.js and NPM

    preparation

    1. visit the Google developers console
    2. create a new project
    3. enable the Google Drive and Google Slides APIs for your project
    4. create a service account connected to your project
    5. generate and download JSON credentials for your service account

    installation

    npm install google-slides

    Presentation

    copy

    import { API, Presentation } from 'google-slides'
     
    const api = new API('path/to/credentials.json')
    const presentationId = '1yMEqtOta984dwNyJoeU92tsC5x7GV2fQK7V4wJc60Mg'
    const template = new Presentation({ id: presentationId }, api)
    template.copy()
    .then(newPresentation => console.log(`New presentation created with name ${newPresentation.name} and ID ${newPresentation.id}.`))
    .catch(e => console.log('Copy error:', e))

    share

    See API.sharePresentation. Instead of api.sharePresentation use presentation.share and don't pass id.

    batchUpdate

    See API.presentationBatchUpdate. Instead of api use presentation and don't pass presentationId.

    API

    import { API } from 'google-slides'
     
    const api = new API('path/to/credentials.json')

    copyPresentation

    api.copyPresentation(id)
    .then(newPresentation => console.log(`name: ${newPresentation.name}, id: ${newPresentation.id}`))

    sharePresentation

    const emailAddress = 'wpbdry@gmail.com'
    const role = 'writer'  // One of: owner | organizer | fileOrganizer | writer | commenter | reader
    const type = 'user'  // One of: user | group | domain | anyone
    const sendNotificationEmails = false 
    api.sharePresentation(id, emailAddress, role, type, sendNotificationEmails)
    .then(() => console.log(`Presentation with ID ${id} successfully shared with ${emailAddress}!`))

    presentationBatchUpdate

    import { API, TextReplacement, ShapeReplacementWithImage } from 'google-slides'
     
    const api = new API('path/to/credentials.json')
     
    api.presentationBatchUpdate(presentationId, [
        new TextReplacement('{{client-name}}', 'My Client'),
        new ShapeReplacementWithImage('{{client-logo}}', logoUrl)
    ])
    .catch(error => doSomething(error))
    TextReplacement

    Replaces all instances of text matching a criterion with replaceText. \

    const text = '{{some-text-to-replace}}'
    const replaceText = 'Replacement Text'
    const matchCase = true  // default
    const textReplacement = new TextReplacement(text, replaceText, matchCase)
    ShapeReplacementWithImage

    Replaces all shapes that match the given criteria with the provided image.

    const text = '{{text-contained-within-shape}}'
    const imageUrl = 'https://example.com/my-img'
    const matchCase = true  // default
    const replaceMethod = 'CENTER_INSIDE'  // default
    const shapeReplacement = new ShapeReplacementWithImage(text, imageUrl, matchCase, replaceMethod)

    underlying services

    The API class implements underlying services, which can be accessed directly if they are awaited. This provides access to further functions from the googleapis module, which may not be implemented here.

    driveService

    import { API } from 'google-slides'
     
    (async function() {
        const api = new API('path/to/credentials.json')
        (await api.driveService).doSomething()
    })()

    The driveService object here is equivelant to the drive object used in all the Node.js snippets in the Google Drive API V3 documentation

    slidesService

    import { API } from 'google-slides'
     
    (async function() {
        const api = new API('path/to/credentials.json')
        (await api.slidesService).doSomething()
    })()

    The slidesService object here is equivelant to the slides or this.slidesService objects used in all the Node.js snippets in the Google Slides API documentation

    why await?

    When new API('path/to/credentials.json') is called, the API logs in with the provided credentials, and initialized the underlying services. Since logging in happens asynchronously, the services may not yet exist by the time they are used. These services are awaited every time they are used in the built in methods. You only need to await each service the first time you use it in any single promise chain.

    Install

    npm i google-slides

    DownloadsWeekly Downloads

    4

    Version

    2.1.1

    License

    MIT

    Unpacked Size

    19.9 kB

    Total Files

    14

    Last publish

    Collaborators

    • avatar