関心分野 >> Google SlideをPythonで操作してみる
GoogleSlideをPythonで操作する
Google Slideには、GoogleSlideAPIが公開されており、Pythonからスライドの生成や編集をおこなうことができるそうです。
上記のリンクをみるとGoogle Slide APIでできることは以下の通り。
このようにGoogleSlideの作成や編集に関して、基本的な部分はPythonから操作することができそうです。しかし、GoogleSlideAPIでは、ファイルを開いてプレゼンを行う機能はないようです。これは、GoogleSlide自体がブラウザでオペレーションするためプレゼンの実行自体は、ブラウザを操作する必要があるためだと思います。
SeleniumとChromeを使ってGoogleSlideを操作する
GoogleSlideAPIでは、作成済みのスライドを使ってプレゼンを行うための操作はできないようでしたので、seleninumを使って操作してみます。
seleniumのモジュールをインストール
Pythonでseleniumを使用するには、selenuimモジュールをインストールする必要があります。seleniumモジュールは、pipコマンドでインストールすることができますので、下記のコマンドを実行すればOKです。
# pip install selenium
次に seleniumドライバ(chromedriver)のインストールを行います。
chromedriverのインストール
seleniumでChromeを操作は、chromedriverを介して実行されます。chromedriverは、使用しているOSごとにバイナリがことなりますので、http://chromedriver.chromium.org/downloads から使用中のChromeのバージョンに対応したchromedriverをインストールします。
chromedriverは、pipコマンドを用いてインストールすることも可能ですが、使用しているChromeのバージョンとの不整合が生じる場合もありますので、注意してください。pipコマンドでのインストールするには、下のように行います。
# pip install chromedriver-binary
pipコマンドでインストールする場合には、''import chromedriver_binary''を実行することでPathを通してくれるので便利ですが、Chromeのバージョンと異なる場合には、エラーになります。chromeのバージョンを確認するには、 chrome://version にアクセスすれば表示されます。
Pythonの簡単なプログラムの作成
seleniumのインストールが終了すれば、Chromeを起動してGoogleSlideにアクセスしてみましょう。ここで、気を付けるのは seleniumでChromeを開いた場合に、基本的に使用中のブラウザに保存されたアカウントは使えませんので、新規のユーザを作成しGoogleのアカウント情報をseleniumのプロファイルに記憶させるか、GoogleSlideを誰でもアクセス可能なURLを指定するかのどちらかの処理が必要になります。
では、簡単なサンプルプログラムを下に示しておきます。
#
#
#
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
sample_slide = "<スライドのID>"
class GSlide(object):
def __init__(self, profile_path="", profile_name="", chromedriver="chromedriver.exe"):
self.profile_path=profile_path
self.profile_name=profile_name
self.chromedriver=chromedriver
self.driver = None
def login(self):
options=webdriver.chrome.options.Options()
# If you want to use access profile, you should create a new profile by using command line interface.
if self.profile_path and self.profile_name:
options.add_argument('--user-data-dir='+self.profile_path)
options.add_argument("--profile-directory="+self.profile_name)
self.driver = webdriver.Chrome(executable_path=self.chromedriver,options=options)
return self.driver
def open_mydrive(self):
self.driver.get('https://drive.google.com/drive/my-drive')
return
def open(self, file_id):
self.driver.get("https://docs.google.com/presentation/d/" + file_id)
return
def start(self):
body = self.driver.find_elements_by_tag_name('body')
body[0].send_keys(Keys.CONTROL, Keys.SHIFT, Keys.F5)
return
def stop(self):
ele = self.driver.find_elements_by_tag_name('iframe')
ele[-1].send_keys(Keys.ESCAPE)
return
def next(self):
ele = self.driver.find_elements_by_tag_name('iframe')
ele[-1].send_keys(Keys.SPACE)
return
def prev(self):
ele = self.driver.find_elements_by_tag_name('iframe')
ele[-1].send_keys(Keys.BACKSPACE)
return
if __name__ == '__main__':
slide=GSlide()
slide.login()
slide.open(sample_slide)
slide.start()