async sendDataInternal()

in marketing-analytics/activation/gmp-googleads-connector/src/api_handlers/sheets_load_csv.js [98:138]


  async sendDataInternal(spreadsheets, message, messageId, config) {
    let data;
    try {
      data = JSON.parse(message);
    } catch (error) {
      this.logger.info(`This is not a JSON string. Data is not from GCS.`);
      data = message;
    }
    const sheetName = config.sheetName;
    const pasteDataRequest = Object.assign(
      {
        coordinate: {},
        type: DEFAULT_PASTE_TYPE,
        delimiter: DEFAULT_DELIMITER,
      },
      config.pasteData);
    const coordinate = pasteDataRequest.coordinate;
    try {
      await spreadsheets.clearSheet(sheetName);
      coordinate.sheetId = await spreadsheets.getSheetId(sheetName);
      coordinate.rowIndex = coordinate.rowIndex || 0;
      const sheetHeader = config.sheetHeader;
      if (sheetHeader) {
        await spreadsheets.loadData(sheetHeader, pasteDataRequest, 'header');
        coordinate.rowIndex += sheetHeader.trim().split('\n').length;
      }
      if (data.bucket) {  // Data is a GCS file.
        return this.loadCsvToSheet_(
          spreadsheets, config, pasteDataRequest, data, messageId);
      } else {  // Data comes from the message data.
        await this.setDimensions_(
          spreadsheets, sheetName, data, pasteDataRequest);
        return spreadsheets.loadData(data, pasteDataRequest);
      }
    } catch (error) {
      return {
        result: false,
        errors: [error.toString()],
      }
    }
  }