E kiʻi i nā memo Gmail ma kahi Google Sheet

Me ka Google Apps Script, hiki i nā mea kūʻai ke hopu i nā memo Gmail, hoʻokaʻawale iā lākou no ka ʻike pili, a hoʻohui iā lākou i kēlā me kēia lālani i kahi pālahalaha Google.
Hiki ke kōkua nui kēia no ka hopu ʻana i nā alakaʻi a i ʻole nā pilina.
Eia kekahi hiʻohiʻona. E noʻonoʻo ua hoʻoholo kāu ʻoihana ecommerce e hana me kahi aloha. Hoʻouna nā mea komo i nā noi ma o ka pūnaewele o ke aloha. ʻO kāu hana ka heluhelu ʻana i kēlā mau noi, koho i nā poʻe i hiki i kāu ʻoihana ke kōkua, a e hoʻopili iā lākou e hoʻomaka.
ʻO ka pilikia, ua kūkulu ʻia ka pūnaewele o ke aloha i ka makahiki 1990 ma kahi kahua paʻa i lalo. ʻAʻole hiki ke hoʻohui ʻia nā hoʻouna ma ka pūnaewele i kahi waihona a mālama ʻia paha. Akā, hiki ke leka uila iā ʻoe i kēlā mau hoʻouna ma ke ʻano kikokikona.
ʻO ka hoʻonā? E hoʻopaʻa a paʻi i kēlā mau leka uila no ka launa pū ʻana me ka hoʻohui ʻana iā lākou i kahi Google Sheet. Ma kēia ʻatikala, e wehewehe wau pehea e hana ai i kēia.
Pepa a me ka Palapala
Hoʻomaka ka hana me ka hana ʻana i kahi Google Sheet hou. E kapa wau iā ia "Charity Email Example."

E hoʻomaka me kahi Google Sheet hou.
E poʻo i ka papa kuhikuhi "Tools" ma ka pepa a koho i ka mea papa kuhikuhi "Script editor".

E hoʻohui i nā pāpalapala Google me nā palapala maʻamau ma o ka "Kōpili hoʻoponopono."
E wehe ana kēia loulou i kahi mea hoʻoponopono palapala Google hou, kahi e hana ai mākou i kā mākou hana. Ua kapa au i kēia palapala "Charity Email Example." Hāʻawi ka mea hoʻoponopono palapala iā mākou e kākau i nā hana JavaScript e holo ana ma kā mākou pālahalaha.

E hoʻohana i ka mea hoʻoponopono palapala e kākau i nā hana JavaScript e holo ma ka pāpalapala.
Nui nā ala e kākau ai i kahi palapala e kiʻi ai i nā memo Gmail a hoʻohui iā lākou i kahi pāpalapala Google. Ma kēia laʻana, e hoʻohana au i ʻehā mau hana: ma ka wehe, e'ākoakoa, getGmail, a parseEmail.
ma ka wehe
ka ma ka wehe ʻokoʻa ka hana ma Google Apps Scripts. E holo mau ana ke wehe ʻia kahi pepa. No laila, pono ka inoa ma ka wehe. Hiki iā ʻoe ke hana i nā mea āpau āu e makemake ai. I kā mākou hihia, e hoʻohui mākou i kahi papa kuhikuhi hou a me kahi mea papa inoa i ka pepa.
hana maOpen() {const spreadsheet = SpreadsheetApp.getActive(); let menuItems = [ {inoa: 'E hōʻiliʻili i nā leka uila', functionName: 'hui'}, ]; spreadsheet.addMenu('Charity', menuItems); }
ʻEkolu ʻāpana o kēia hana.
ʻO ka mua, e hoʻohana mākou i ka SpreadsheetApp papa e kiʻi i ka pepa hana — ʻo ia hoʻi, ka pepa a ka mea hoʻohana e nānā nei. Hāʻawi ʻia kēia mea pepa i ka "spreadsheet" mau JavaScript.
papapalapala const = SpreadsheetApp.getActive();
Ma hope aʻe, e hana wau i kahi ʻano o nā mea papa inoa. I kēia laʻana, hoʻokahi wale nō mea papa kuhikuhi kā mākou hui, akā hiki ke loaʻa hou aku. ʻO ke kākau ʻana i kēia ala e maʻalahi ai ka hoʻohui ʻana i nā mea papa inoa e like me ka mea e pono ai.
e hoailona oukou ia inoa hana wehewehe i ka hana hoʻihoʻi e holo i ka wā e kaomi ai ka mea hoʻohana i ka mea "E hōʻiliʻili i nā leka uila". I kēia hihia, e kāhea wau i kahi hana i kapa ʻia e'ākoakoa.
let menuItems = [ {inoa: 'E hōʻiliʻili i nā leka uila', functionName: 'hui'}, ];
Hōʻike kikoʻī ka palapala a Google pehea e hoʻohui ai i kahi papa kuhikuhi. No kā mākou hana, pono ʻoe e hoʻohana wale i ka addMenu ʻano - ka hāʻawi ʻana iā ia, ʻo ka mua, i ka inoa o ka papa kuhikuhi a, ʻo ka lua, i ka papa kuhikuhi o nā mea papa inoa.
spreadsheet.addMenu('Charity', menuItems);
Ma ka mea hoʻoponopono palapala, hiki iā mākou ke holo i kēia hana ma ke kaomi ʻana i ke pihi holo, ka triangle ʻeleʻele e like me ke pihi pāʻani no kahi wikiō. ʻO kahi ʻē aʻe, hiki iā mākou ke hōʻano hou i ka pālahalaha, akā e pani ia i ka mea hoʻoponopono palapala. Inā pani ʻia, hiki iā mākou ke wehe hou mai ka papa kuhikuhi Mea Hana.

Hiki i ka pihi holo ke hoʻokō i kahi hana i koho ʻia i loko o ka mea hoʻoponopono palapala.
ʻO ka manawa mua āu e holo ai i ka polokalamu, pono ʻoe e ʻae iā ia e komo i kāu moʻokāki Google.

Hāʻawi i ka ʻae ʻana i ka palapala i kāu moʻokāki Google.
Ma hope o ka holo ʻana o kēia hana, e neʻe mākou i kahi papa kuhikuhi hou a me ka papa kuhikuhi i loko o ka pāpaʻi aloha.

E hōʻike ʻia kahi papa kuhikuhi hou a me ka papa kuhikuhi ma ka pā.
e'ākoakoa
A laila, e kākau kākou i ka e'ākoakoa hana.
Pono ka inoa maanei. Iaʻu, ʻo ka "hui" ka manaʻo o ka ʻohi a me ka hoʻonohonoho ʻana. Eia naʻe, hiki iā ʻoe ke inoa i ka hana i kāu makemake.
hana e hōʻiliʻili () { e ʻae i nā memo = getGmail (); let curSheet = SpreadsheetApp.getActive(); messages.forEach(message => {curSheet.appendRow(parseEmail(message))}); }
Hoʻopau ka hana i ʻekolu mau hana.
ʻO ka mea mua, hoʻihoʻi ia i nā leka uila aloha āpau ma ke kāhea ʻana i ka getGmail hana, aʻu e kākau ai ma hope.
e ʻae i nā memo = getGmail ();
A laila, hoʻohana ia i ka SpreadsheetApp papa e kiʻi i ka pepa hana.
let curSheet = SpreadsheetApp.getActive();
ʻO ka hope, hoʻololi ka hana i nā memo āpau, me ka hoʻohui ʻana i nā ʻike i makemake ʻia mai kēlā me kēia i ka pāpalapala ma hope o ka hoʻouna ʻana i ka parseEmail hana a mākou e kākau ai.
messages.forEach(message => {curSheet.appendRow(parseEmail(message))});
Nui nā mea e hana nei i kēia pae hope, no laila e nānā kākou.
Mahalo memo in memo, loaʻa ka hana i ka pepa o kēia manawa, papa kuhikuhi.
A laila hoʻohana ʻo ia i kā Google appendRow ala e hoʻohui i kahi lālani i ka pepa. Lawe pinepine kēia ʻano hana i kahi mea array. Akā i kēia hihia, hāʻawi mākou i ka hopena o kahi hana ʻē aʻe, parseEmail, ʻo ia hoʻi, e hāʻawi i ka array pono.
getGmail
ka getGmail ʻO ka hana ka hana nui loa.
ʻO ka mea mua, hoʻonoho mākou i ka waiwai o kahi JavaScript mau i kapa ʻia ʻo "query" i kahi string huli Gmail.
const query = "mai:a@e.com AND kumuhana:Charity Example NOT label: done";
ʻO kēia kaula hulina ka mea āu e hoʻohana ai no ka huli holomua ma Gmail. E hoʻomaopopo mākou i ka helu "mai" a me ka leka uila "kumuhana." Hoʻomaopopo pū mākou ʻaʻole i hoʻokomo ʻia ka leka uila i ka lepili "hana".

Ua like ke kaula hulina me kahi hulina holomua ma Gmail.
A laila, hoʻohana mākou i kā Google GmailApp papa e holo i ka huli ma ka pahu komo o ka mea hoohana. ʻO ka hopena o ia ʻimi ʻana, ʻo ia nā pae āpau mai ke aloha me ke kumuhana kūpono.
let threads = GmailApp.search(query);
Inā nui nā memo ma kāu moʻokāki Gmail, hiki iā ʻoe ke loaʻa nā pūʻulu he ʻumi. E wikiwiki ana kēia i ka palapala.
let threads = GmailApp.search(query,0,10);
ʻO nā laina ʻelua e hiki mai ana o ka hana ke pale aku i ka leka uila mai ka hoʻohui ʻana i ʻelua manawa i kā mākou pālahalaha.
E hoʻomanaʻo, ma ka ʻimi hulina, ua kāpae mākou i nā memo me ka lepili "hana". No laila, hoʻohui mākou i ka lepili "hana" i nā memo a mākou i kiʻi hou ai. Ke holo ka palapala aʻe, e haʻalele ia i kēia mau memo.
Hoʻohana ka laina mua i kā Google getUserLabelByName ala e ʻimi ai i ka lepili "hana" a hāʻawi iā ia i ka "label". Inā ʻaʻole i loaʻa kēlā lepili i ka moʻokāki Gmail o ka mea hoʻohana, na ka laina aʻe e hana.
let label = GmailApp.getUserLabelByName("hana"); inā (!label) {label = GmailApp.createLabel("hana")}
ʻO ka ʻāpana hope o kēia hana e hōʻiliʻili i kēlā me kēia leka uila, hoʻohui iā ia i ka pūʻulu "message", a hoʻopaʻa inoa iā ia "hana."
threads.forEach(thread => {mess.push(thread.getMessages()[0].getPlainBody()); label.addToThread(thread);});
ʻO ka hope, hoʻihoʻi ka hana i nā ʻano memo.
hoʻihoʻi i nā leka;
ʻO ka mea i hoʻopau ʻia getGmail hana.
hana getGmail() { const query = "mai:roggio@yahoo.com A me kumuhana:Charity Example NOT label: done"; let threads = GmailApp.search(query); let label = GmailApp.getUserLabelByName("hana"); inā (!label) {label = GmailApp.createLabel("hana")} e ʻae i nā memo = []; threads.forEach(thread => {mess.push(thread.getMessages()[0].getPlainBody()); label.addToThread(thread);}); hoʻihoʻi i nā leka; }
parseEmail
ʻO ka hana hope loa e "parse" i ka leka uila a hoʻopili iā ia e kūpono i kā mākou pāpalapala.
Pono kēia hana e pili i ke ʻano kikokikona maʻalahi o ka memo. No laila, e nānā kākou i ka mea e hoʻouna mai ai ka pūnaewele aloha iā mākou.
lā: Pōʻa, ʻApelila 16, 2020 mua_inoa: Olga hope_name: Razcok leka uila: oraxcok@example.com kelepona: 202-456-1111 ip: 35.138.107.243 ʻōlelo: Makemake au e komo i kēia papahana. kala_makemake: ʻeleʻele
E hoʻohana wau i nā ʻōlelo maʻamau JavaScript e hoʻomaʻemaʻe a hoʻopololei i kēia kope memo. E hoʻohana wau iā Regex Pal, kahi mea hana maʻamau, e hoʻoholo ai i nā ʻōlelo e hana i kaʻu mea e pono ai.

Hōʻike ʻo Regex Pal iā ʻoe e ʻike i nā ʻāpana o ka kikokikona e pili ana i kahi ʻōlelo maʻamau.
E hoʻohana au i nā koma ma hope aku e hoʻokaʻawale i nā mea ma ka papa inoa. No laila e wehe au i nā koma i ka lā e pale ai i ka huikau.
lā: Poaha, April 16, 2020
E hoʻololi kēia ʻōlelo maʻamau i nā koma me kahi kaula ʻole, ʻaʻohe mea ʻole.
let parsed = memo.pani (/,/g,'')
I kēia hihia, ʻo "message" ka leka i hāʻawi ʻia i ka parseEmail hana mai ka e'ākoakoa hana aʻu i kākau mua ai.
He mana ka ʻōlelo maʻamau aʻe e like me ka wehe ʻana i ka hapa nui o nā huaʻōlelo laina hou (n) mai kā mākou leka uila kikokikona a holoi i nā huaʻōlelo āpau ma mua, me nā kolona.
No ka laʻana, e hoʻololi ʻo ia i ka "first_name: Olga" i ", Olga," (ʻae, ʻo ia kahi koma, kahi hakahaka, a me ka huaʻōlelo "Olga").
e hoʻokaʻawale = message.replace(/,/g,'') .replace(/n*.+:/g,',')
E waiho ka ʻanuʻu mua i kahi koma makemake ʻole ma mua o ka lā. No laila ka mea aʻe kuapo wehe 'ia ka olelo.
let parsed = message.replace(/,/g,'') .replace(/n*.+:/g,',') .replace(/^,/,'')
Aia nō ʻelua mau huaʻōlelo laina hou. Hoʻopau kēia ʻōlelo hou iā lākou.
let parsed = message.replace(/,/g,'') .replace(/n*.+:/g,',') .replace(/^,/,'') .replace(/n/g,'')
Loaʻa iā mākou kahi kaula i hoʻokaʻawale ʻia i ke koma e like me kēia:
Poaha ʻApelila 16 2020, Olga, Razcok, oraxcok@...
Hiki iā mākou ke hoʻololi i kēia i kahi ʻano me ka JavaScript i kūkulu ʻia hoʻokaʻawale hana.
let parsed = message.replace(/,/g,'') .replace(/n*.+:/g,',') .replace(/^,/,'') .replace(/n/g, '') .māhele(',');
I kēia manawa, ua hoʻokaʻawale ʻia kā mākou leka uila, inā makemake ʻoe, ma ke ʻano he array.
["Ka lā 16 ʻApelila 2020", "Olga", "Razcok", "oraxcok@..."]
Aneane hiki iā ʻoe ke kū i kēia manawa. Hoʻohui i kahi ʻōlelo hoʻihoʻi maʻalahi, a e hana ka palapala.
hoʻihoʻi i ka leka;
Aia nō naʻe kekahi hoʻomaikaʻi hou e hiki iā mākou ke hana. Aia i loko o ka leka uila ka ʻike a mākou e pono ʻole ai, e like me ka helu wahi o ka Internet protocol (IP) a ka mea hoʻouna a me kāna kala punahele.
ip: 35.138.107.243
kala_makemake: ʻeleʻele
Hiki iā mākou ke wehe i kēia mai kā mākou pūʻulu me palapala 'āina, ke ala hoʻonohonoho JavaScript. Eia ka hopena o ka palapala 'āina Hāʻawi ʻia ke ala i ka "hopena" hoʻololi.
let result = [0,1,2,3,4,6] .palapalapala(index => parsed [index]);
ʻOkoʻa kēia laina, no laila e lawe kākou i kēlā me kēia ʻāpana. ʻO ka mea mua, loaʻa iā mākou nā helu helu.
[0,1,2,3,4,6]
Hōʻike nā helu ma kēia ʻano i nā kūlana ma ka memo pūʻulu. E hoʻomanaʻo ʻo nā arrays he zero-based. Ke helu ʻoe i nā kūlana i kahi laha, hoʻomaka ʻoe ma ka ʻole.
- Lā - kūlana 0
- Ka inoa mua - kūlana 1
- Ka inoa hope - kūlana 2
- Email — kūlana 3
- Kelepona — kūlana 4
- IP — kūlana 5
- Manaʻo - kūlana 6
- Ka waihoʻoluʻu punahele - kūlana 7
ka palapala 'āina E lawe ke ala i kēlā me kēia helu i ka laha a hāʻawi iā ia i ka waiwai "index", e hana ana i kahi hui hou e hoʻemi i ka IP IP makemake ʻole a me ka ʻikepili kala punahele.
[0,1,2,3,4,6].palapala palapala(Index => hoʻopau ʻia [Index]);
Eia ka mea i hoʻopau ʻia parseEmail hana like me.
hana parseEmail(memo){ let parsed = message.replace(/,/g,'') .replace(/n*.+:/g,',') .replace(/^,/,'') .replace (/n/g,'') .split(','); let result = [0,1,2,3,4,6] .palapalapala(index => parsed [index]); hoʻihoʻi i ka hopena; }
E hoʻāʻo
Ke manaʻo nei ua hoʻouna ke aloha i kahi leka uila maʻalahi me ke ʻano like me ka mea i luna, ke kaomi ʻoe i ka mea papa inoa "E hōʻiliʻili i nā leka uila", e loaʻa iā ʻoe kahi lālani hou.

Hoʻohui ka palapala i kahi lālani i ka pāpalapala. E hoʻohui i kahi lālani no kēlā me kēia leka uila i hoʻouna ʻia e ke aloha i nā manawa a pau e kaomi ʻia ai ka mea papa inoa "E hōʻuluʻulu i nā leka uila".