Ödeme korumasıAyrıntılar
- Paket kapsamındaki revizyonlar ücretsizdir.
- Teslimattan sonraki 3 gün içinde yanıt vermezseniz iş otomatik olarak onaylanır.
Para, ödeme yaptığınızda bloke edilir ve yalnızca işi onayladığınızda aktarılır.

Örnek sonuç
Merging the monthly sales files of 9 shops into one Excel report
How it is run
python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO Folder: sales/2026-10, 9 files found
2026-11-02 09:14:03 INFO shop-01.csv: 1,284 rows
2026-11-02 09:14:04 INFO shop-02.xlsx: 967 rows
2026-11-02 09:14:04 WARN shop-07.csv: 3 rows without a price skipped (lines 88, 412, 913)
2026-11-02 09:14:05 INFO Done: 10,412 rows -> report-2026-10.xlsx (sheets "Sales" and "Totals")
Settings, not code
The column names of each shop live in settings.ini, so a new shop or a renamed column is a line there:
[columns]
date = Date, Sale date, Day
product = Product, Item, Name
quantity = Qty, Quantity, Pcs
price = Price, Unit price
A part of the code
def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
"""Reads one shop's file and gives it the report's column names."""
table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
renamed = {}
for name, variants in columns.items():
found = next((c for c in table.columns if c.strip() in variants), None)
if found is None:
raise ReportError(f"{path.name}: no column for '{name}' (looked for {', '.join(variants)})")
renamed[found] = name
table = table.rename(columns=renamed)[list(columns)]
table["shop"] = path.stem
return table
Files: a ZIP archive with merge_sales.py (310 lines), settings.ini, requirements.txt and a README with installing Python, running the script and what each message in the log means. The client runs it on their own computer.
Client: a small chain of 9 stationery shops; each shop sends its sales for the month as a CSV or Excel file, with slightly different column names. Task: one script that reads every file in a folder, brings the columns to one shape, and writes a single Excel report with all sales and a sheet of totals by shop.
Müşteri ve tüm ayrıntılar kurgusaldır.
Bu hizmet hakkında
Aynı e-postayı içinde adları, tarihleri ya da tutarları olacak şekilde 80 müşteriye, öğrenciye ya da iş ortağına yazmanız gerektiğinde kopyalayıp yapıştırmak saatler alır. Bu Google Apps Script, Google E-Tablolar dosyanızın içinde yaşar ve her satıra kendi Gmail'inizden kişiye özel bir e-posta gönderir: {{Name}}, {{Date}} ve diğer sütunları şablonunuza doldurur, satıra Gönderildi ve saati yazar, daha önce gönderilmiş satırları atlar; böylece onu güvenle tekrar çalıştırabilirsiniz. E-postalarınızı bekleyen kendi kişi listeniz içindir; satın alınmış listeler ya da soğuk toplu gönderim için değildir. Google bir betiğin günde kaç e-posta gönderebileceğini sınırlar; bu sınır ücretsiz Gmail için Google Workspace'ten düşüktür. Betik sınırda durur ve daha sonra devam eder. Kurulumu ve çalıştırmayı kendi hesabınızda siz yaparsınız.
Neler dahil
- Neler alırsınızApps Script kodunu ve onu tablonuza nasıl yapıştıracağınızı, erişime nasıl izin vereceğinizi ve nasıl göndereceğinizi gösteren bir README dosyasını içeren bir ZIP arşivi; kod sipariş sayfasında da gösterilir.
- Kişiye özel alanlarKonuda ve metinde tablonun herhangi bir sütunu
- Kendi Gmail'inizdenCevaplar, gönderdiğiniz her e-posta gibi size döner
- Gönderildi işaretleriHer satır ne zaman gönderildiğini gösterir, böylece hiçbir şey iki kez gitmez
- Google'ın sınırları içindeGünlük sınırda durur ve daha sonra devam eder
- Okunabilir kodYorumlarla; sonradan şablonu değiştirmek kolay
Nasıl çalışır
- 1GörevTablonun sütunlarını ve göndermek istediğiniz e-postayı gönderirsiniz
- 2KodBetiği ve kurulum kılavuzunu yazarız
- 3DeneyinTablonun bir kopyasına yapıştırır ve önce kendi adresinize gönderirsiniz
- 4DeğişikliklerPaketiniz kapsamında değişiklik ister, varsa hata mesajını gönderirsiniz
Sizden neler gerekiyor
Tablonuzun sütun adları ve uydurma adlar ve adreslerle iki üç satır, sütunların gireceği yerlerin işaretlendiği e-postanın konusu ve metni, düz metin mi yoksa bir Gmail taslağından biçimlendirmeli mi olduğu. Listedeki kişilerin kim olduğu ve listeye nasıl girdikleri (müşterileriniz, üyeleriniz, öğrencileriniz), yaklaşık kaç satır olduğu ve ücretsiz Gmail mi yoksa Google Workspace mi kullandığınız. Varsa ekler ve Drive'ınızda nerede oldukları.
Size soracaklarımız:
- Kime yazıyorsunuz?
- Tablonun sütunları neler?
- E-postada ne yazmalı?
- Ücretsiz Gmail mi, Google Workspace mi?
Paketleri karşılaştırın
| Paketler | TemelBasit toplu e-posta$16 | StandartAyarlı toplu e-posta$33 | PremiumToplu e-posta aracı$67 |
|---|---|---|---|
| Teslim süresi | 1 gün | 2 gün | 3 gün |
| Revizyonlar | 1 | 2 | 3 |
| Kod | en fazla 150 satır | en fazla 400 satır | en fazla 1.000 satır |
| Kod dosyası | 1 | en fazla 3 | en fazla 8 |
| Ayar dosyası | Hayır | Evet | Evet |
| Anlaşılır hata mesajları ve log | Hayır | Evet | Evet |
| Çalıştırma seçenekleri ve zamanlanmış çalıştırma kılavuzu | Hayır | Hayır | Evet |
| Kurulum ve çalıştırma kılavuzu (README) | Evet | Evet | Evet |
| Dil | Google Apps Script | Google Apps Script | Google Apps Script |
| Sipariş ver Temel | Sipariş ver Standart | Sipariş ver Premium |
Ödeme koruması
Sipariş verirken ödersiniz, ancak para yalnızca onaylanan iş için aktarılır.
- Sabit fiyatPaket fiyatı, ödeme yaptıktan sonra değişmez.
- Para bloke edilirÖdeme yaptığınızda tutar yalnızca bloke edilir. İşi onayladığınızda hizmete aktarılır.
- Teslimattan önce kontrolHer sonuç size ulaşmadan önce kalite kontrolünden geçer ve onaylamadan önce sipariş sayfasında görürsünüz.
- Ücretsiz revizyonlarBrifiniz kapsamında, paketin izin verdiği sayıda değişiklik isteyin.
- 3 gün sonra onayTeslimattan sonraki 3 gün içinde işi onaylamaz veya değişiklik istemezseniz iş otomatik olarak onaylanır. Teslimattan sonra sipariş sohbetine yazarsanız sipariş bekletilir; yanıt verdikten sonra 3 günlük süreyi yeniden başlatabiliriz ve bunu sohbette bildiririz.
- Yeniden yapım veya tam iadeSonuç brifinize uymuyorsa ve revizyonlar sorunu çözmediyse ya da iş teslim süresinin iki katından uzun sürerse sipariş sohbetine yazın: işi yeniden yaparız veya ödemenin tamamını iade ederiz.
Sorular ve yanıtlar
Günde kaç e-posta gönderebilir?
Google'ın hesabınızın bir betikten göndermesine izin verdiği kadar; bu, ücretsiz Gmail için Google Workspace'ten düşüktür. Güncel rakamları Google, Apps Script kotaları sayfasında gösterir. Betik sınırda durur ve bir sonraki çalıştırma ilk gönderilmemiş satırdan devam eder.
Satın aldığım bir listeye gönderebilir miyim?
Hayır. Betik sizi tanıyan ve e-postalarınızı bekleyen kişiler içindir, örneğin müşterileriniz ya da üyeleriniz. Satın alınmış listeler ve soğuk toplu gönderim Google'ın kurallarını ihlal eder ve hesabınızın engellenmesine yol açabilir.
Abonelikten çıkma bağlantısı ekleyecek mi?
Bu e-postaları istemeyenlerin cevap yazmasını isteyen bir satır ekleyebilir ve abonelikten çıktı olarak işaretlediğiniz satırları atlayabilir. Tek tıkla abonelikten çıkılan bültenler için bir e-posta pazarlama servisi daha uygundur.
Gmail'ime erişiminiz olacak mı?
Hayır. Kodu kendi tablonuza siz yapıştırırsınız ve e-posta göndermesine izin vermeyi Google bize değil size sorar. Hesabınıza asla giriş yapmayız.
Yanıtınızı bulamadınız mı?