google-ads-editor
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseGoogle Ads Editor Database Skill
Google Ads Editor 数据库操作技能
Insert campaigns directly into Google Ads Editor's local SQLite database without CSV import.
无需通过CSV导入,直接将广告系列插入到Google Ads Editor的本地SQLite数据库中。
Database Location
数据库位置
~/Library/Application Support/Google/Google-AdWords-Editor/724/ape_4295165693.dbNote: The account ID () may vary. Find the correct one:
4295165693bash
ls ~/Library/Application\ Support/Google/Google-AdWords-Editor/724/ape_*.db~/Library/Application Support/Google/Google-AdWords-Editor/724/ape_4295165693.db注意: 账户ID()可能会有所不同,请按以下方式找到正确的ID:
4295165693bash
ls ~/Library/Application\ Support/Google/Google-AdWords-Editor/724/ape_*.dbKey Tables
核心数据表
| Table | Purpose | Parent Relationship |
|---|---|---|
| Campaign | Campaigns | None |
| AdGroup | Ad groups | parentId = 2^33 + Campaign.localId |
| Keyword | Keywords | parentId = 2^34 + AdGroup.localId |
| ResponsiveSearchAd | RSA ads | parentId = 2^34 + AdGroup.localId |
| 表格 | 用途 | 父级关系 |
|---|---|---|
| Campaign | 广告系列 | 无 |
| AdGroup | 广告组 | parentId = 2^33 + Campaign.localId |
| Keyword | 关键词 | parentId = 2^34 + AdGroup.localId |
| ResponsiveSearchAd | RSA广告 | parentId = 2^34 + AdGroup.localId |
ID Encoding Formula
ID编码公式
python
undefinedpython
undefinedCampaign → AdGroup relationship
广告系列 → 广告组 关系
adgroup_parent_id = (2**33) + campaign_local_id # 8589934592 + local_id
adgroup_parent_id = (2**33) + campaign_local_id # 8589934592 + 本地ID
AdGroup → Keyword/RSA relationship
广告组 → 关键词/RSA广告 关系
keyword_parent_id = (2**34) + adgroup_local_id # 17179869184 + local_id
undefinedkeyword_parent_id = (2**34) + adgroup_local_id # 17179869184 + 本地ID
undefinedField Value Reference
字段值参考
Status Values
状态值
- = Paused
0 - = Enabled
1
- = 暂停
0 - = 启用
1
State Values
同步状态值
- = Synced from server
0 - = New/pending upload
1
- = 从服务器同步
0 - = 新增/待上传
1
Keyword Match Types (criterionType)
关键词匹配类型(criterionType)
- = Broad match
0 - = Phrase match
1 - = Exact match
2
- = 广泛匹配
0 - = 短语匹配
1 - = 精确匹配
2
Money Values
金额值
All monetary values in micros (1 dollar = 1,000,000 micros):
python
def dollars_to_micros(dollars: float) -> int:
return int(dollars * 1_000_000)所有金额值以微单位计算(1美元 = 1,000,000微单位):
python
def dollars_to_micros(dollars: float) -> int:
return int(dollars * 1_000_000)Examples:
示例:
$2.00 = 2000000
$2.00 = 2000000
$0.50 = 500000
$0.50 = 500000
undefinedundefinedBidding Strategy Types
出价策略类型
- = Manual CPC
1 - = Target CPA
9 - = Maximize Conversions
12
- = 手动CPC
1 - = 目标CPA
9 - = 最大化转化
12
Campaign Types
广告系列类型
- = Search
0 - = Display
2 - = Shopping
3
- = 搜索广告
0 - = 展示广告
2 - = 购物广告
3
URL Blob Encoding
URL Blob编码
finalUrls field uses a custom blob format:
python
import struct
def encode_urls_blob(urls: list[str]) -> bytes:
"""Encode URLs list to Google Ads Editor blob format."""
if not urls:
return b'\x00\x00\x00\x00'
result = struct.pack('<I', len(urls)) # URL count (little-endian uint32)
for url in urls:
url_bytes = url.encode('utf-16-le')
char_count = len(url)
result += struct.pack('<I', char_count) # Character count
result += url_bytes
return resultfinalUrls字段使用自定义blob格式:
python
import struct
def encode_urls_blob(urls: list[str]) -> bytes:
"""将URL列表编码为Google Ads Editor blob格式。"""
if not urls:
return b'\x00\x00\x00\x00'
result = struct.pack('<I', len(urls)) # URL数量(小端uint32)
for url in urls:
url_bytes = url.encode('utf-16-le')
char_count = len(url)
result += struct.pack('<I', char_count) # 字符数量
result += url_bytes
return resultQuick Insert Examples
快速插入示例
Insert Campaign
插入广告系列
sql
INSERT INTO Campaign (localId, state, name, status, campaignType, biddingStrategyType)
VALUES (
(SELECT COALESCE(MAX(localId), 0) + 1 FROM Campaign),
1, -- state: new
'My Campaign',
1, -- status: enabled
0, -- campaignType: search
1 -- biddingStrategyType: manual CPC
);sql
INSERT INTO Campaign (localId, state, name, status, campaignType, biddingStrategyType)
VALUES (
(SELECT COALESCE(MAX(localId), 0) + 1 FROM Campaign),
1, -- 状态:新增
'我的广告系列',
1, -- 状态:启用
0, -- 广告系列类型:搜索
1 -- 出价策略类型:手动CPC
);Insert Ad Group
插入广告组
sql
-- First get the campaign localId
INSERT INTO AdGroup (localId, parentId, state, name, status, maxCpc)
VALUES (
(SELECT COALESCE(MAX(localId), 0) + 1 FROM AdGroup),
8589934592 + [CAMPAIGN_LOCAL_ID], -- parentId encoding
1, -- state: new
'My Ad Group',
1, -- status: enabled
2000000 -- maxCpc: $2.00
);sql
-- 先获取广告系列localId
INSERT INTO AdGroup (localId, parentId, state, name, status, maxCpc)
VALUES (
(SELECT COALESCE(MAX(localId), 0) + 1 FROM AdGroup),
8589934592 + [CAMPAIGN_LOCAL_ID], -- 父级ID编码
1, -- 状态:新增
'我的广告组',
1, -- 状态:启用
2000000 -- 最高CPC:$2.00
);Insert Keyword
插入关键词
sql
INSERT INTO Keyword (localId, parentId, state, text, criterionType, status, maxCpc, finalUrls)
VALUES (
(SELECT COALESCE(MAX(localId), 0) + 1 FROM Keyword),
17179869184 + [ADGROUP_LOCAL_ID], -- parentId encoding
1, -- state: new
'my keyword',
2, -- criterionType: exact match
1, -- status: enabled
2000000, -- maxCpc: $2.00
X'...' -- encoded URL blob
);sql
INSERT INTO Keyword (localId, parentId, state, text, criterionType, status, maxCpc, finalUrls)
VALUES (
(SELECT COALESCE(MAX(localId), 0) + 1 FROM Keyword),
17179869184 + [ADGROUP_LOCAL_ID], -- 父级ID编码
1, -- 状态:新增
'my keyword',
2, -- 匹配类型:精确
1, -- 状态:启用
2000000, -- 最高CPC:$2.00
X'...' -- 编码后的URL blob
);Python Helper Script
Python辅助脚本
Full script available at:
/Users/avysotsky/Projects/vood/vibe-business/scripts/google_ads_db_insert.py完整脚本路径:
/Users/avysotsky/Projects/vood/vibe-business/scripts/google_ads_db_insert.pyUsage
使用方法
bash
undefinedbash
undefinedClose Google Ads Editor first!
先关闭Google Ads Editor!
python3 /Users/avysotsky/Projects/vood/vibe-business/scripts/google_ads_db_insert.py
undefinedpython3 /Users/avysotsky/Projects/vood/vibe-business/scripts/google_ads_db_insert.py
undefinedImport and Use Programmatically
程序化导入与使用
python
from scripts.google_ads_db_insert import GoogleAdsDBInserter, dollars_to_micros
with GoogleAdsDBInserter() as db:
# Create campaign
campaign_id = db.insert_campaign(
name="My Campaign",
status=1,
campaign_type=0,
bidding_strategy_type=1,
)
# Create ad group
ag_id = db.insert_ad_group(
campaign_local_id=campaign_id,
name="My Ad Group",
max_cpc=2.00, # dollars
)
# Add keyword
db.insert_keyword(
ad_group_local_id=ag_id,
text="my keyword",
criterion_type=2, # exact
max_cpc=2.00,
final_url="https://example.com?utm_source=google",
)
# Add RSA
db.insert_responsive_search_ad(
ad_group_local_id=ag_id,
headlines=["Headline 1", "Headline 2", ...], # up to 15
descriptions=["Description 1", ...], # up to 4
final_url="https://example.com",
path1="path1",
path2="path2",
)python
from scripts.google_ads_db_insert import GoogleAdsDBInserter, dollars_to_micros
with GoogleAdsDBInserter() as db:
# 创建广告系列
campaign_id = db.insert_campaign(
name="我的广告系列",
status=1,
campaign_type=0,
bidding_strategy_type=1,
)
# 创建广告组
ag_id = db.insert_ad_group(
campaign_local_id=campaign_id,
name="我的广告组",
max_cpc=2.00, -- 美元
)
# 添加关键词
db.insert_keyword(
ad_group_local_id=ag_id,
text="my keyword",
criterion_type=2, -- 精确匹配
max_cpc=2.00,
final_url="https://example.com?utm_source=google",
)
# 添加RSA广告
db.insert_responsive_search_ad(
ad_group_local_id=ag_id,
headlines=["标题1", "标题2", ...], -- 最多15个
descriptions=["描述1", ...], -- 最多4个
final_url="https://example.com",
path1="path1",
path2="path2",
)Important Notes
重要注意事项
- Close Google Ads Editor before running database inserts
- Backup the database before making changes:
bash
cp ~/Library/Application\ Support/Google/Google-AdWords-Editor/724/ape_4295165693.db \ ~/Library/Application\ Support/Google/Google-AdWords-Editor/724/ape_4295165693.db.backup - After inserting, open Google Ads Editor - new items appear with "pending" state
- Click "Post" to upload changes to Google Ads
- 插入数据库前请关闭Google Ads Editor
- 修改前请备份数据库:
bash
cp ~/Library/Application\ Support/Google/Google-AdWords-Editor/724/ape_4295165693.db \ ~/Library/Application\ Support/Google/Google-AdWords-Editor/724/ape_4295165693.db.backup - 插入完成后,打开Google Ads Editor - 新增项目会显示“待处理”状态
- 点击“发布”将更改上传至Google Ads
Viewing Database
查看数据库
bash
undefinedbash
undefinedList all campaigns
列出所有广告系列
sqlite3 ~/Library/Application\ Support/Google/Google-AdWords-Editor/724/ape_4295165693.db
"SELECT localId, name, status FROM Campaign"
"SELECT localId, name, status FROM Campaign"
sqlite3 ~/Library/Application\ Support/Google/Google-AdWords-Editor/724/ape_4295165693.db
"SELECT localId, name, status FROM Campaign"
"SELECT localId, name, status FROM Campaign"
List all ad groups
列出所有广告组
sqlite3 ~/Library/Application\ Support/Google/Google-AdWords-Editor/724/ape_4295165693.db
"SELECT localId, name, status, maxCpc FROM AdGroup"
"SELECT localId, name, status, maxCpc FROM AdGroup"
sqlite3 ~/Library/Application\ Support/Google/Google-AdWords-Editor/724/ape_4295165693.db
"SELECT localId, name, status, maxCpc FROM AdGroup"
"SELECT localId, name, status, maxCpc FROM AdGroup"
List all keywords
列出所有关键词(前20条)
sqlite3 ~/Library/Application\ Support/Google/Google-AdWords-Editor/724/ape_4295165693.db
"SELECT localId, text, criterionType, maxCpc FROM Keyword LIMIT 20"
"SELECT localId, text, criterionType, maxCpc FROM Keyword LIMIT 20"
undefinedsqlite3 ~/Library/Application\ Support/Google/Google-AdWords-Editor/724/ape_4295165693.db
"SELECT localId, text, criterionType, maxCpc FROM Keyword LIMIT 20"
"SELECT localId, text, criterionType, maxCpc FROM Keyword LIMIT 20"
undefinedSchema Reference
架构参考
Full schema can be viewed with:
bash
sqlite3 ~/Library/Application\ Support/Google/Google-AdWords-Editor/724/ape_4295165693.db ".schema Campaign"
sqlite3 ~/Library/Application\ Support/Google/Google-AdWords-Editor/724/ape_4295165693.db ".schema AdGroup"
sqlite3 ~/Library/Application\ Support/Google/Google-AdWords-Editor/724/ape_4295165693.db ".schema Keyword"
sqlite3 ~/Library/Application\ Support/Google/Google-AdWords-Editor/724/ape_4295165693.db ".schema ResponsiveSearchAd"可通过以下命令查看完整架构:
bash
sqlite3 ~/Library/Application\ Support/Google/Google-AdWords-Editor/724/ape_4295165693.db ".schema Campaign"
sqlite3 ~/Library/Application\ Support/Google/Google-AdWords-Editor/724/ape_4295165693.db ".schema AdGroup"
sqlite3 ~/Library/Application\ Support/Google/Google-AdWords-Editor/724/ape_4295165693.db ".schema Keyword"
sqlite3 ~/Library/Application\ Support/Google/Google-AdWords-Editor/724/ape_4295165693.db ".schema ResponsiveSearchAd"