見出し画像

自動でwebページを開くプログラム作成してみた

Akatsukiさんの記事(下からどうぞ)をみて勉強させていただきつつ,色々と試行錯誤を繰り返し,活用法や自分なりに別のプログラムから操作する物を作成してきました。


挑戦してみたこと

・過去のAkatsukiさんのプログラムでは,ユーザーによって名前のところにurlが「・」で区切られていたこともあり,それらを修正できるようにしました。

(最新版ではそのようなことはないようです。もしかしたら過去版でも正常で,私がエクセルで開いていたことが原因だったのかも。かつ,私はエクセルをpythonから操作するようにしていました)

・さらに,いちいちurlを開くことすら面倒になった(人のために)私は,自動的に範囲を選択して指定分だけ新しいタブで開くようなプログラムも作ってみました。(こっちがメインの目標)


おことわりと参考書籍紹介

おことわり1:完全に初心者&独学なので,書き方のお作法がおかしいと思いますし,defとか__name__とかもよくわからないから使っていません。

とりあえず動くことには動きます。

環境は私は電車移動中に主に作成していたのでpythonista3というアプリで作成しました。

このスタイルなのも全てこの本のスタイルに従っているから。


ご興味の方は読まれて見るのもおすすめです。

(私は旧版を使っていましたが,第二版も出たんですね)


おことわり2:昨晩から今このnoteを書く直前までAkatsukiさんの記事と同じくgoogle Colaboratoryで実行できるようにしたかったのですが,私の力では無理でした。

どうやら環境が自分のパソコンではなく,googlecolaboratoryの環境上で操作しているからみたいです。


コードです

私としては動作するしほぼ完成でいいかな,って思ってますが,pythonista3を使っていたりgooglecolaboratoryで動かなかったり,excelがない人には使えなかったりと,かなり限局的な使用範囲になると思います。

上記,ご容赦ください。参考になれば,と思います。


・「・」で区切られていたurlを抽出して元のエクセルに保存する

繰り返しを2~500としていますが,2なのは,1が見出しのセルになっているので,情報がないこと,500は適当です笑

何番目のセルまで情報を直したいかに応じて500は書き換えてください。

import openpyxl
import re
 #xxxxxにエクセルファイル名を入れる 
file = "xxxxx.xlsx"
wb = openpyxl.load_workbook(file)
ws = wb.active

for i in range(2,500):
	cell = ws.cell(i,2)
	val = str(cell.value)
	
	result = re.search('https://note.com/..*',val)
	if result:
		print(result.group())
		result_str=str(result.group())
		ws.cell(column=3,row=i,value=result_str)
wb.save(file)


・エクセルシート内のurlを指定番号から指定番号の範囲内で2秒おきにタブを開く

それぞれの環境の問題でwebbrowserがうまく働かない可能性がありますので,その辺は適宜調べつつ行ってもらればと思います。

pythonista3では対象のexcelファイルと以下のプログラムを並べておけば動作しました。

import openpyxl
import webbrowser
import time
 #xxxxx .xlsxにエクセルファイル名を入れてください

file = "xxxxx.xlsx"
wb = openpyxl.load_workbook(file)
ws = wb.active

start = int(input("start cell num"))
end = int(input("end cell num :"))

webbrowser.get('google-chrome')

for i in range(start+1,end+2):
		cell_link = ws.cell(i,3)
		link = str(cell_link.value)
		
		cell_num = ws.cell(i,1)
		webbrowser.open(link, new=1, autoraise=True)
	 #URL開いた番号の数字の色を赤に変更 
		cell_num.font = openpyxl.styles.fonts.Font(color='FF0000')
		time.sleep(2)
		wb.save(file)
print(str(start)+'から'+str(end)+'完了')


以上です。


まとめ

誰向けかわからないけどコード公開してみました。

雑なつくりなのはお許しください笑


今回はurlを自動で開けるようにするのと文字列の抽出でエクセルの書き換えを勉強できました。

このあたりは普段の業務(仕事や勉強)などにも生かせる方が多いと思いますので,何かのきっかけにしていただければいいかな〜と思います。


長くなりましたが,最後までみていただきありがとうございました。


自己紹介


#毎日投稿 #大学生 #イラスト #毎日note #プログラミング #python

しみっちゃんは,Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイトプログラムであるAmazonアソシエイト・プログラムの参加者です。

最後までお読みいただきありがとうございます。よろしければサポートしていただけたら幸いです。薬剤師国家試験や大学院での研究を継続するための勉強代に充てさせていただきます!