前言
公司的項目,需要對項目中事件上報進行重新處理和封裝,方便調用和自動上報!自己花了半天時間全部封裝搞好,如下圖:
其中ASLogsEventName類是存放約定好的事件字段的,但是APP中有四百個事件上報的點,要是一個一個手寫上去,估計手要殘了,事件Excel列表如下圖:
所以肯定不能手寫啦😏😉😉
自動化腳本
這裏我使用Python腳本,自動讀取Excel表格,然後生成iOS的代碼,這樣就簡單的多了!🤗
使用了Python的xlrd庫,安裝命名如下:
pip3 install xlrd
話不多說上代碼如下:
import xlrd
# 過濾了不需要記錄的表
_ignore_list = ['更新記錄', 'App頁面', '公共屬性']
# 事件名列表
_event_name_list = []
# 讀取excel
def read_excel_table(file_path):
global _tables, _ignore_list
data = xlrd.open_workbook(file_path)
for table_name in data.sheet_names():
if table_name not in _ignore_list:
table = data.sheet_by_name(table_name)
analysis_one_table(table, table_name)
# 分析每個表
def analysis_one_table(table, table_name):
nrows = table.nrows
ncols = table.ncols
# 從1開始 不包括第一行標題
sign = False
for row in range(1, table.nrows):
row_values = table.row_values(row)
if '{' in str(row_values):
sign = True
if sign == False:
analysis_every_row(row_values, table_name)
if '}' in str(row_values):
sign = False
# 分析每一行
def analysis_every_row(row_values, table_name):
global _event_name_list
event_name = row_values[1]
if '(' in event_name:
event_name = event_name[:event_name.find('(')]
if '(' in event_name:
event_name = event_name[:event_name.find('(')]
event_name = ''.join(event_name.split())
event_name = event_name.replace('.', '_')
event_name = event_name.replace('、', '_')
if len(event_name) > 0 and event_name not in _event_name_list:
_event_name_list.append(event_name)
if table_name == '聽故事埋點':
notes = row_values[2] + '==' + row_values[3]
else:
notes = row_values[0] + '==' + row_values[2]
notes = notes.replace('\n', ' ')
notes = ''.join(notes.split())
notes = notes.replace('==', ' ')
if notes.startswith(' '):
notes = notes[1:]
pro_str = '/// ' + notes + '\n'
# .h的代碼
# pro_str += 'FOUNDATION_EXPORT NSString *const K'+ event_name +';'
# .m的代碼
pro_str += 'NSString *const K'+ event_name +' = @"'+ event_name +'";'
print(pro_str)
print('\n')
if __name__ == '__main__':
file_path = 'ahaschoolAppEvent.xlsx'
read_excel_table(file_path)
這樣就能自動生成iOS代碼了😘註釋也自動加上了