in marketing-analytics/activation/common-libs/nodejs-common/src/apis/spreadsheets.js [222:260]
async reshape(sheetName, targetRows, targetColumns) {
const request = /** @type{Params$Resource$Spreadsheets$Get} */ {
spreadsheetId: this.spreadsheetId,
ranges: sheetName,
};
try {
const sheets = await this.getApiClient();
const response = await sheets.spreadsheets.get(request);
const sheet = response.data.sheets[0];
const sheetId = sheet.properties.sheetId;
const rowCount = sheet.properties.gridProperties.rowCount;
const columnCount = sheet.properties.gridProperties.columnCount;
this.logger.debug(`Get sheet[${sheetName}]: `, sheet);
const requests = {
spreadsheetId: this.spreadsheetId,
resource: {requests: []},
};
if (rowCount !== targetRows) {
requests.resource.requests.push(this.getChangeDimensionRequest_(
sheetId, 'ROWS', rowCount, targetRows));
}
if (columnCount !== targetColumns) {
requests.resource.requests.push(this.getChangeDimensionRequest_(
sheetId, 'COLUMNS', columnCount, targetColumns));
}
this.logger.debug(`Reshape Sheet from [${rowCount}, ${
columnCount}] to [${targetRows}, ${targetColumns}]`,
JSON.stringify(requests.resource.requests));
if (requests.resource.requests.length > 0) {
const { data } = await sheets.spreadsheets.batchUpdate(requests);
this.logger.debug(`Reshape Sheet [${sheetName}]: `, data);
} else {
this.logger.debug('No need to reshape.');
}
} catch (error) {
this.logger.error(error.toString());
throw error;
}
}