Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
oh-my-spreadsheets
Advanced tools
Library for conveniently performing CRUD (Create, Read, Update, Delete) operations on data in Google Sheets.
Easy to use and type-safe library that allows seamless interaction with Google Spreadsheets as if they were a database.
Tip: Works exceptionally well with TypeScript
To get started, you'll need to obtain a credentials file for your service account, which will be used to interact with your Google Spreadsheet. link (My blog in Russian)
After that you will need the client_email
and private_key
fields from the received file.
About storing secrets in Github: https://github.com/marketplace/actions/google-sheets-secrets-action#about-private-key You should replace all line breaks (
\n
) with real ones. If you are storing auth data in .env file you must enclose the value for the private key (from Google json file) in quotation marks, otherwise authorization will not work
oh-my-spreadsheets
as a dependency in your project npm i oh-my-spreadsheets
import { Table } from "oh-my-spreadsheets";
const userSchema = {
A: 'username',
B: 'email'
} as const;
export const usersTable = new Table<typeof userSchema>(userSchema, {
spreadsheetId: '<your-table-id>',
sheet: '<sheet-name>', // any tab name (optional)
email: '<service-account-email>',
privateKey: '<service-account-private-key>',
});
// Create a new table
await usersTable.createTable();
// Receive rows
const users = await usersTable.read({ limit: 10, offset: 0 });
// Receive all rows
const users = await usersTable.read();
// Add single row
await usersTable.create({
data: { username: 'test', email: 'test@mail.com' }
});
// Add multiple rows
await usersTable.create({
data: [
{ username: 'test1', email: 'test1@mail.com' },
{ username: 'test2', email: 'test2@mail.com' }
]
});
// Update user email
await usersTable.update({
where: { username: 'test' },
data: { email: 'updated@mail.com' }
});
// Update any rows that have an empty email field.
await usersTable.update({
where: { email: undefined },
data: { email: 'defaultemail@mail.com' }
});
// Delete row
await usersTable.delete({
where: { username: 'test' }
});
// Delete all rows
await usersTable.delete();
// Delete the table
await usersTable.deleteTable();
FAQs
Library for conveniently performing CRUD (Create, Read, Update, Delete) operations on data in Google Sheets.
We found that oh-my-spreadsheets demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.