in marketing-analytics/activation/gmp-googleads-connector/src/api_handlers/google_ads_offline_userdata_job.js [84:124]
async sendDataInternal(googleAds, message, messageId, config) {
let records;
try {
const { bucket, file } = JSON.parse(message);
if (file) {
const storageFile = new StorageFile(bucket, file);
records = await storageFile.loadContent(0);
} else {
this.logger.error('Could find GCS infomation in message', message);
return {
result: false,
errors: [`Could find GCS infomation in message: ${message}`],
};
}
} catch (error) {
this.logger.error('Incoming message: ', message);
records = message;
}
try {
const { offlineUserDataJobConfig } =
changeObjectNamingFromSnakeToLowerCamel(config);
if (offlineUserDataJobConfig.type.startsWith('CUSTOMER_MATCH')) {
offlineUserDataJobConfig.listId =
await this.getOrCreateUserList(googleAds, offlineUserDataJobConfig);
}
const jobResourceName =
await googleAds.createOfflineUserDataJob(offlineUserDataJobConfig);
this.logger.info('jobResourceName: ', jobResourceName);
const managedSend = this.getManagedSendFn(config);
const configedUpload = googleAds.getAddOperationsToOfflineUserDataJobFn(
offlineUserDataJobConfig, jobResourceName);
const result = await managedSend(configedUpload, records, messageId);
this.logger.info('add userdata result: ', result);
await googleAds.runOfflineUserDataJob(
offlineUserDataJobConfig, jobResourceName);
return result;
} catch (error) {
this.logger.error('Error in UserdataOfflineDataService: ', error);
return this.getResultFromError(googleAds, error);
}
}