标题映射功能

huangapple go评论103阅读模式
英文:

Header Mapping Function

问题

以下是您期望的标题:

  1. campaign_id,campaign_source,campaign_medium,campaign_name,date_column,cost_column,clicks_column,impressions_column
英文:

I am trying to write an app script function that rewrite the header based on the mapping.

Below my code:

  1. function headerMapping() {
  2. // var values = sheet.getDataRange().getValues();
  3. // var originalHeaders = values[0];
  4. var values = [['Campaign Id', 'Source', 'Medium', 'Campaign', 'Date', 'Spend', 'Clicks', 'Impressions'], ['563573', 'bing', 'cpc', 'Search', 'Sun Jun 25 00:00:00 GMT+01:00 2023', '18.97', '7.0', '11.0']];
  5. var originalHeaders = ['Campaign Id', 'Source', 'Medium', 'Campaign', 'Date', 'Spend', 'Clicks', 'Impressions'];
  6. var headerMapping = {
  7. 'Campaign Id': 'campaign_id',
  8. 'Source': 'campaign_source',
  9. 'Medium': 'campaign_medium',
  10. 'Campaign': 'campaign_name',
  11. 'Date': 'date_column',
  12. 'Cost': 'cost_column',
  13. 'Clicks': 'clicks_column',
  14. 'Impressions': 'impressions_column'
  15. };
  16. // Rewrite the headers based on the mapping
  17. var newHeaders = originalHeaders.map(function(header) {
  18. return headerMapping[header.toLowerCase()] || header;
  19. });
  20. // Create the CSV data with the new headers
  21. var csvData = [newHeaders.join(',')];
  22. for (var i = 1; i < values.length; i++) {
  23. var row = values[i];
  24. var formattedRow = [];
  25. for (var j = 0; j < row.length; j++) {
  26. var value = row[j];
  27. // Format date column as YYYY-MM-DD
  28. if (originalHeaders[j].toLowerCase() === 'date' && value instanceof Date) {
  29. value = Utilities.formatDate(value, spreadsheet.getSpreadsheetTimeZone(), 'YYYY-MM-dd');
  30. }
  31. formattedRow.push(value);
  32. }
  33. csvData.push(formattedRow.join(','));
  34. }
  35. Logger.log(csvData.join('\n'));
  36. }

This code return this header:

>Campaign Id,Source,Medium,Campaign,date_column,Spend,Clicks,Impressions

I expect this header:

>campaign_id,campaign_source,campaign_medium,campaign_name,date_column,cost_column,clicks_column,impressions_column

Any help?

答案1

得分: 0

return headerMapping[header.toLowerCase()] || header; 只会匹配小写的标头。请改用

  1. return headerMapping[header] || header;

代替。

英文:

return headerMapping[header.toLowerCase()] || header; will only match lowercase headers. Use

  1. return headerMapping[header] || header;

instead.

huangapple
  • 本文由 发表于 2023年6月26日 18:29:48
  • 转载请务必保留本文链接:https://go.coder-hub.com/76555829.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定