diff --git a/email/email.html b/email/email.html
index 812b4cd..59dab69 100644
--- a/email/email.html
+++ b/email/email.html
@@ -442,6 +442,7 @@
Keyword |
Position |
+ Best |
Updated |
{{keywordsTable}}
diff --git a/utils/generateEmail.ts b/utils/generateEmail.ts
index 2fc8e12..c4f40dc 100644
--- a/utils/generateEmail.ts
+++ b/utils/generateEmail.ts
@@ -68,6 +68,19 @@ const getPositionChange = (history:KeywordHistory, position:number) : number =>
return status;
};
+const getBestKeywordPosition = (history: KeywordHistory) => {
+ let bestPos;
+ if (Object.keys(history).length > 0) {
+ const historyArray = Object.keys(history).map((itemID) => ({ date: itemID, position: history[itemID] }))
+ .sort((a, b) => a.position - b.position).filter((el) => (el.position > 0));
+ if (historyArray[0]) {
+ bestPos = { ...historyArray[0] };
+ }
+ }
+
+ return bestPos?.position || '-';
+};
+
/**
* Generate the Email HTML based on given domain name and its keywords
* @param {string} domainName - Keywords to scrape
@@ -97,6 +110,7 @@ const generateEmail = async (domainName:string, keywords:KeywordType[], settings
keywordsTable += `
${countryFlag} ${deviceIcon} ${keyword.keyword} |
${keyword.position}${posChangeIcon} |
+ ${getBestKeywordPosition(keyword.history)} |
${timeSince(new Date(keyword.lastUpdated).getTime() / 1000)} |
`;
});