【Python】GRCのCSVを一つのExcelファイルにまとめる方法

この記事は分で読み終わります。
GRCを使用してホームページの計測をしているブロガーやマーケターの皆さん。
GRCはプランによって使用できる機能に制限がかかってしまいます。
そこで今回はGRCから保存した順位を、一つのファイルにまとめるプログラムを作りました。
GRCから保存したCSVファイルを一つのファイルにまとめる
import os
import glob
import csv
import openpyxl
csvPath = r'C:\Users\csvまでのパス'
outputPath = r'C:\Users\xlsxを保存したいパス'
wb = openpyxl.Workbook()
ws = wb.active
files = glob.glob(csvPath+"/*")
for file in files:
fileName = os.path.basename(file)
print(fileName + 'からデータを抽出中...')
wb.create_sheet(fileName)
ws = wb.get_sheet_by_name(fileName)
count = 0
saveFile = os.path.join(outPutPath,'マージ.xlsx')
with open(file,'r') as f :
reader = csv.reader(f)
for site,url,word,yahoo,google,bing in reader :
count = count + 1
ws[f"A{count}"] = site
ws[f"B{count}"] = url
ws[f"C{count}"] = word
ws[f"D{count}"] = yahoo
ws[f"E{count}"] = google
ws[f"F{count}"] = bing
wb.save(saveFile)
実行結果
データは隠していますが、しっかり出力されています。
抽出したcsvファイルごとにシートを分け、ファイルの名前をシートの名前に
GRCの出力設定はカスタマイズできます。
下記画像がCSVファイルです。
コードの解説
import os
import glob
import csv
import openpyxl
csvPath = r’C:\Users\csvまでのパス’
outputPath = r’C:\Users\xlsxを保存したいパス’
wb = openpyxl.Workbook()
ws = wb.active
files = glob.glob(csvPath+”/*”)
まずインポートと、読み込むcsvのディレクトリと保存先のディレクトリをセットしてください。
その後openpyxl.Workbook()でエクセルファイルを書き換えられる状態にし、wb.activeでアクティブ状態にしてください。
最後にglob.globでcsvPathに入っているファイル名をfilesに入れます。
そして下記ソースのfor分でfilesに入っているファイル名を一軒づつfileに入れて処理をします。
for file in files:
fileName = os.path.basename(file)
print(fileName + ‘からデータを抽出中…’)
wb.create_sheet(fileName)
ws = wb.get_sheet_by_name(fileName)
count = 0
saveFile = os.path.join(outPutPath,’マージ.xlsx’)
with open(file,’r’) as f :
reader = csv.reader(f)
os.path.basename(file)でfileに入っているフルパスからファイル名だけを取得し、wb.create_sheet(fileName)でファイル名のシートを作成します。
ws = wb.get_sheet_by_name(fileName)でこれから書き込むシートを選択。
count = 0はエクセルにセルを選択する際、下に書き続けるために使用。
ここに書いた理由は途中でエラーが発生しても、発生直前のデータを保存する為です。
open(file,’r’)でファイルを読み込むと宣言し、csv.reader(f)で読み込んだ内容をreaderに入れてます。
for site,url,word,yahoo,google,bing in reader :
count = count + 1
ws[f”A{count}”] = site
ws[f”B{count}”] = url
ws[f”C{count}”] = word
ws[f”D{count}”] = yahoo
ws[f”E{count}”] = google
ws[f”F{count}”] = bing
wb.save(saveFile)
for site,url,word,yahoo,google,bing in readerではreaderに入っている変数をそれぞれsite,url,word,yahoo,google,bingに入れてます。
Yusuke
最新記事 by Yusuke (全て見る)
- 【準備は何が必要?】フリーランスクリエイターとは? - 2022年4月24日
- 【ファクタリング】フリーランスの為の先払いサービスとは? - 2022年4月23日
- 【初心者必見】フリーランスになる前に読んでおくべき本を紹介! - 2022年4月22日