Sign up (with export icon)

Extract document content in Node.js

Show the table of contents

This article presents an example of an application that allows for extracting document content using the Server-side Editor API feature.

Dependencies

Copy link

This example uses the following dependencies:

  • axios

It also uses core dependencies from Node.js: crypto.

Example

Copy link

This example demonstrates how to use the Server-side Editor API to extract document content using Node.js. Make sure you have Node.js and npm installed before following these steps.

  1. Create a new project and install dependencies:
mkdir cs-sse-api-example && cd cs-sse-api-example && npm init -y && npm i axios && touch sse-api.js
Copy code
  1. Open cs-sse-api-example/sse-api.js and paste the following code snippet:
const crypto = require( 'crypto' );
const axios = require( 'axios' );

// Set document id
const documentId = 'my_document_id';

// Update with your credentials and application endpoint
const environmentId = 'txQ9sTfqmXUyWU5LmDbr';
const apiSecret = '4zZBCQoPfRZ7Rr7TEnGAuRsGgbfF58Eg0PA8xcLD2kvPhjGjy4VGgB8k0hXn';
const applicationEndpoint = 'https://33333.cke-cs.com';
const apiEndpoint = `${ applicationEndpoint }/api/v5/${ environmentId }/collaborations/${ documentId }/evaluate-script`;

// Example script that extracts document content
const script = `
    const data = editor.getData();

    return {
        content: data,
        wordCount: data.split(' ').length,
        characterCount: data.length
    };
`;

const body = {
    'script': script,
    'user': {
        'id': 'txQ9sTfqmXUyWU5LmDbr',
        'name': 'System Process',
    }
};

const CSTimestamp = Date.now();
const config = {
    headers: {
        'X-CS-Timestamp': CSTimestamp,
        'X-CS-Signature': generateSignature( apiSecret, 'POST', apiEndpoint, CSTimestamp, body )
    },
};

axios.post( apiEndpoint, body, config )
    .then( response => {
        console.log( 'Status:', response.status );
        console.log( 'Response data:', response.data );
    } ).catch( error => {
        console.log( 'Error:', error.message );
        console.log( 'Response data:', error.response.data );
    } );

function generateSignature( apiSecret, method, uri, timestamp, body ) {
    const url = new URL( uri );
    const path = url.pathname + url.search;
    const hmac = crypto.createHmac( 'SHA256', apiSecret );

    hmac.update( `${ method.toUpperCase() }${ path }${ timestamp }` );

    if ( body ) {
        hmac.update( Buffer.from( JSON.stringify( body ) ) );
    };

    return hmac.digest( 'hex' );
}
Copy code
  1. Update your credentials and the documentId values in the code snippet.

  2. Execute the script:

node sse-api.js
Copy code

After a successful response with a status code 201, you should see the document content, word count, and character count in the console output.

Note

To learn more about the Server-side Editor API, head to the Developer resources section.