async reshape()

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;
    }
  }