Skip to content

Spreadsheet Sharing

Intrasheets offers a spreadsheet feature that allows users to share their spreadsheets by link or through an embed option. This feature provides flexible access control, enabling developers to define specific authentication rules and permissions based on ownership, privacy, invitation status or any other custom methods.

With Intrasheets, developers can implement custom authentication checks to control user access to shared spreadsheets. For example, when a user requests a spreadsheet link, the server can verify ownership or confirm if the user has an invitation. Based on these settings, users can view public spreadsheets or gain access to private ones through a secure invitation link.

Intrasheets provides a built-in interface for creating user invitations. The application generates new invitation token when adding a new user. New users can be added through the interface or via the API extension if enabled.

The invitation token is a unique hash appended to a spreadsheet URL, enabling the server to verify user permissions and manage access based on server-defined rules. For more information about that, please check more about the authentication methods.

Example: https://yourdomain.com/sheets/4b8bd2c1-f3c4-4c36-b4ec-e5e3fb15f1e7/27aff468

The token is normally available within the spreadsheet object, typically structured as:

{
spreadsheet: {}
users: [
{
level: 0, // 0 as reader, 1 as editor, 2 as owner
token: '27aff468'
}
]
}

Users can use the “Send an email notification” option when sharing a spreadsheet using the share interface. Developers can intercept this action using the beforeChange event on the server side, giving them control over how and when email notifications are sent to users.

server({
// Other events (...)
beforeChange: async function(guid, changes, auth) {
// Before the user changes the spreadsheet
let test = await Authentication('change', guid, auth);
if (test) {
// Verify if the method requires ownership
if (requireOwnership(changes.method)) {
// Requires ownership
let level = await getUserLevel(guid, auth);
// User is owner
if (level === 2) {
// For the users check if you need to send email
if (changes.method === 'setUsers') {
// Interface is flagged to send email
let sendmail = changes.args[1];
if (sendmail) {
let users = changes.args[0];
if (users && users.length) {
// Send the invitation by email
console.log(users)
}
}
}
} else {
// The user does not have permission
return false;
}
}
}
return test;
}
// Other properties (...)
})

For public spreadsheets is possible to generate a snippet code for sharing a spreadsheet in any website. This code can be generated using the Intrasheets application.

Formifier

Users can generate a snipped code as below from the Intrasheets interface.

<div id="spreadsheet"></div>
<script src="https://cdn.jsdelivr.net/npm/@jspreadsheet/cloudify/dist/index.min.js"></script>
<script>
// Create a Jspreadsheet Cloud spreadsheet
cloudify(document.getElementById('spreadsheet'), {
url: 'https://yourddomain.com/api',
guid: '1766f0e3-f898-47d8-8e34-f8efaee471ff',
license: 'your-license',
});
</script>