Skip to content

Commit ec8bcc4

Browse files
committed
Fetch developer metadata by Id and create for columns, rows and sheets
1 parent 60c53dc commit ec8bcc4

File tree

4 files changed

+80
-1
lines changed

4 files changed

+80
-1
lines changed

lib/GoogleSpreadsheet.js

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,52 @@ class GoogleSpreadsheet {
332332
});
333333
}
334334

335+
async getMetadataById(metadataId) {
336+
// Request type = `developerMetadata`
337+
// https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.developerMetadata/get
338+
return this.axios
339+
.get(`/developerMetadata/${metadataId}`)
340+
.then((response) => response.data);
341+
}
342+
343+
async _createDeveloperMetadata(metadataKey, metadataValue, location, visibility, metadataId) {
344+
// Request type = `createDeveloperMetadata`
345+
// https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.developerMetadata#DeveloperMetadata
346+
return this._makeSingleUpdateRequest('createDeveloperMetadata', {
347+
developerMetadata: {
348+
metadataKey,
349+
metadataValue,
350+
location,
351+
visibility: visibility || 'PROJECT',
352+
metadataId,
353+
},
354+
}).then((data) => data.developerMetadata);
355+
}
356+
357+
async createSheetDeveloperMetadata(metadataKey, metadataValue, sheetId, visibility, metadataId) {
358+
return this._createDeveloperMetadata(
359+
metadataKey,
360+
metadataValue,
361+
{
362+
sheetId: sheetId || 0,
363+
},
364+
visibility,
365+
metadataId
366+
);
367+
}
368+
369+
async createRangeDeveloperMetadata(metadataKey, metadataValue, range, visibility, metadataId) {
370+
return this._createDeveloperMetadata(
371+
metadataKey,
372+
metadataValue,
373+
{
374+
dimensionRange: range,
375+
},
376+
visibility,
377+
metadataId
378+
);
379+
}
380+
335381
async deleteNamedRange(namedRangeId) {
336382
return this._makeSingleUpdateRequest('deleteNamedRange', { namedRangeId });
337383
}

lib/GoogleSpreadsheetCell.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,21 @@ class GoogleSpreadsheetCell {
174174
await this._sheet.saveUpdatedCells([this]);
175175
}
176176

177+
async createDeveloperMetadata(metadataKey, metadataValue, visibility, metadataId) {
178+
return this._sheet._spreadsheet.createRangeDeveloperMetadata(
179+
metadataKey,
180+
metadataValue,
181+
{
182+
dimension: 'COLUMNS',
183+
sheetId: this._sheet.sheetId,
184+
startIndex: this._column,
185+
endIndex: this._column + 1,
186+
},
187+
visibility,
188+
metadataId
189+
);
190+
}
191+
177192
// used by worksheet when saving cells
178193
// returns an individual batchUpdate request to update the cell
179194
_getUpdateRequest() {

lib/GoogleSpreadsheetRow.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,21 @@ class GoogleSpreadsheetRow {
6767
return result;
6868
}
6969
async del() { return this.delete(); } // alias to mimic old version of this module
70+
71+
async createDeveloperMetadata(metadataKey, metadataValue, visibility, metadataId) {
72+
return this._sheet._spreadsheet.createRangeDeveloperMetadata(
73+
metadataKey,
74+
metadataValue,
75+
{
76+
dimension: 'ROWS',
77+
sheetId: this._sheet.sheetId,
78+
startIndex: this._rowNumber,
79+
endIndex: this._rowNumber + 1,
80+
},
81+
visibility,
82+
metadataId
83+
);
84+
}
7085
}
7186

7287
module.exports = GoogleSpreadsheetRow;

lib/GoogleSpreadsheetWorksheet.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -782,9 +782,12 @@ class GoogleSpreadsheetWorksheet {
782782
// https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/request#DeleteBandingRequest
783783
}
784784

785-
async createDeveloperMetadata() {
785+
async createDeveloperMetadata(metadataKey, metadataValue, visibility, metadataId) {
786786
// Request type = `createDeveloperMetadata`
787787
// https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/request#CreateDeveloperMetadataRequest
788+
return this._spreadsheet.createSheetDeveloperMetadata(
789+
metadataKey, metadataValue, this.sheetId, visibility, metadataId
790+
);
788791
}
789792

790793
async updateDeveloperMetadata() {

0 commit comments

Comments
 (0)