如何将新的 Sheet 添加到现有的 SpreadSheet 中? Google Sheets API 和 Node.js
How to add a new Sheet into existing SpreadSheet? Google Sheets API with Node.js
将Google-Sheets-API用于Node.js,我将如何以编程方式add/create将新 Sheet 添加到现有电子表格中?
它看起来像 Google 的 Sheets API docs don't specify a method for creating a new sheet. The only operation you can perform on a Sheet is the copyTo method,它将一个电子表格的 Sheet 复制到另一个电子表格中。
如果它确实存在,它可能会通过 POST 请求 /v4/spreadsheets/{spreadsheetId}/sheets 来完成,但同样,它没有记录在案,如果您可能无法使用试过了。
这实际上是可能的,并记录在 Spreadsheets/batchUpdate/Requests#AddSheetRequest
下
authorize(JSON.parse(clientSecretContent), (auth) => {
const sheets = google.sheets({ version: 'v4', auth });
const request = {
// The ID of the spreadsheet
"spreadsheetId": spreadsheetId,
"resource": {
"requests": [{
"addSheet": {
// Add properties for the new sheet
"properties": {
// "sheetId": number,
// "title": sheetTitleSting,
// "index": number,
// "sheetType": enum(SheetType),
// "gridProperties": {
// object(GridProperties)
// },
// "hidden": boolean,
// "tabColor": {
// object(Color)
// },
// "rightToLeft": boolean
}
}
}]
}
};
sheets.spreadsheets.batchUpdate(request, (err, response) => {
if (err) {
// TODO: Handle error
} else {
// TODO: Handle success
}
});
});
可以使用 batchUpdate 和 addSheet
https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/batchUpdate
示例:
const sheetname = 'my sheetname'
const client = new google.auth.JWT(
client_email,
null,
private_key,
['https://www.googleapis.com/auth/spreadsheets'],
null
)
const jwt = await new Promise((resolve, reject) => {
client.authorize((err, tokens) => {
if (err) {
reject(err);
} else {
google.options({
auth: client
});
resolve();
}
});
});
const sheets = await google.sheets('v4');
try {
const request = {
spreadsheetId: spreadsheetId,
resource: {
requests: [{
addSheet: {
properties: {
title: sheetname
}
}
}],
},
auth: client,
};
const resp = await sheets.spreadsheets.batchUpdate(request)
} catch (error) {
console.log(error)
}
对于后代股份,这里有一个基于承诺的 (async/await) 表格 API 示例,说明如何将 sheet(制表符)添加到价差 sheet。
await api.spreadsheets.batchUpdate ({
spreadsheetId: spreadsheetId,
resource: {requests: [ {addSheet: {properties: {title: tabName }}}]}});
一个完整的例子
async function addSheet (auth, spreadsheetId, tabName) {
const api = google.sheets({version: 'v4', auth: auth});
try {
// Only add sheet if it doesn't already exist
if ((await api.spreadsheets.get({spreadsheetId: spreadsheetId})).data.sheets
.filter(sheet => sheet.properties.title === tabName).length === 0) {
await api.spreadsheets.batchUpdate ({
spreadsheetId: spreadsheetId,
resource: {requests: [ {addSheet: {properties: {title: tabName }}}]}});
}
} catch (err) {
console.log('Sheets API Error: ' + err);
}
}
将Google-Sheets-API用于Node.js,我将如何以编程方式add/create将新 Sheet 添加到现有电子表格中?
它看起来像 Google 的 Sheets API docs don't specify a method for creating a new sheet. The only operation you can perform on a Sheet is the copyTo method,它将一个电子表格的 Sheet 复制到另一个电子表格中。
如果它确实存在,它可能会通过 POST 请求 /v4/spreadsheets/{spreadsheetId}/sheets 来完成,但同样,它没有记录在案,如果您可能无法使用试过了。
这实际上是可能的,并记录在 Spreadsheets/batchUpdate/Requests#AddSheetRequest
下authorize(JSON.parse(clientSecretContent), (auth) => {
const sheets = google.sheets({ version: 'v4', auth });
const request = {
// The ID of the spreadsheet
"spreadsheetId": spreadsheetId,
"resource": {
"requests": [{
"addSheet": {
// Add properties for the new sheet
"properties": {
// "sheetId": number,
// "title": sheetTitleSting,
// "index": number,
// "sheetType": enum(SheetType),
// "gridProperties": {
// object(GridProperties)
// },
// "hidden": boolean,
// "tabColor": {
// object(Color)
// },
// "rightToLeft": boolean
}
}
}]
}
};
sheets.spreadsheets.batchUpdate(request, (err, response) => {
if (err) {
// TODO: Handle error
} else {
// TODO: Handle success
}
});
});
可以使用 batchUpdate 和 addSheet https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/batchUpdate
示例:
const sheetname = 'my sheetname'
const client = new google.auth.JWT(
client_email,
null,
private_key,
['https://www.googleapis.com/auth/spreadsheets'],
null
)
const jwt = await new Promise((resolve, reject) => {
client.authorize((err, tokens) => {
if (err) {
reject(err);
} else {
google.options({
auth: client
});
resolve();
}
});
});
const sheets = await google.sheets('v4');
try {
const request = {
spreadsheetId: spreadsheetId,
resource: {
requests: [{
addSheet: {
properties: {
title: sheetname
}
}
}],
},
auth: client,
};
const resp = await sheets.spreadsheets.batchUpdate(request)
} catch (error) {
console.log(error)
}
对于后代股份,这里有一个基于承诺的 (async/await) 表格 API 示例,说明如何将 sheet(制表符)添加到价差 sheet。
await api.spreadsheets.batchUpdate ({
spreadsheetId: spreadsheetId,
resource: {requests: [ {addSheet: {properties: {title: tabName }}}]}});
一个完整的例子
async function addSheet (auth, spreadsheetId, tabName) {
const api = google.sheets({version: 'v4', auth: auth});
try {
// Only add sheet if it doesn't already exist
if ((await api.spreadsheets.get({spreadsheetId: spreadsheetId})).data.sheets
.filter(sheet => sheet.properties.title === tabName).length === 0) {
await api.spreadsheets.batchUpdate ({
spreadsheetId: spreadsheetId,
resource: {requests: [ {addSheet: {properties: {title: tabName }}}]}});
}
} catch (err) {
console.log('Sheets API Error: ' + err);
}
}