我正在try 编写一个基于映射重写标头的应用程序脚本函数.
下面是我的代码:
function headerMapping() {
// var values = sheet.getDataRange().getValues();
// var originalHeaders = values[0];
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']];
var originalHeaders = ['Campaign Id', 'Source', 'Medium', 'Campaign', 'Date', 'Spend', 'Clicks', 'Impressions'];
var headerMapping = {
'Campaign Id': 'campaign_id',
'Source': 'campaign_source',
'Medium': 'campaign_medium',
'Campaign': 'campaign_name',
'Date': 'date_column',
'Cost': 'cost_column',
'Clicks': 'clicks_column',
'Impressions': 'impressions_column'
};
// Rewrite the headers based on the mapping
var newHeaders = originalHeaders.map(function(header) {
return headerMapping[header.toLowerCase()] || header;
});
// Create the CSV data with the new headers
var csvData = [newHeaders.join(',')];
for (var i = 1; i < values.length; i++) {
var row = values[i];
var formattedRow = [];
for (var j = 0; j < row.length; j++) {
var value = row[j];
// Format date column as YYYY-MM-DD
if (originalHeaders[j].toLowerCase() === 'date' && value instanceof Date) {
value = Utilities.formatDate(value, spreadsheet.getSpreadsheetTimeZone(), 'YYYY-MM-dd');
}
formattedRow.push(value);
}
csvData.push(formattedRow.join(','));
}
Logger.log(csvData.join('\n'));
}
此代码返回以下标头:
Campaign Id,Source,Medium,Campaign,date_column,Spend,Clicks,Impressions
个
我希望看到这个标题:
campaign_id,campaign_source,campaign_medium,campaign_name,date_column,cost_column,clicks_column,impressions_column
个
有什么帮助吗?