【イチからDX】GASでGoogleスライドのテキスト置換・画像変換に挑戦してみた〜補足説明編
※こちらの記事は前回の続きとなっております。
*はじめに
こちらの記事で補足説明させて頂く内容としては以下の通りです。
①プルダウン設定方法/スプレッドシート
②図形挿入・スクリプト割り当て/スプレッドシート
③テーマ編集方法/スライド
①プルダウン設定方法/スプレッドシート
GASとは直接関係ありませんが、修了者リストのG2セルで使用しています。
(入力を楽にする・入力ミスを防ぐといった目的で選択形式にしています)
該当セルを一度クリックして選択し、「データ」タブ→「データの入力規則」をクリックしてください。
今回は選択肢が3つだけなので、条件で「リストを直接指定」を選んで選択肢となるプログラム名を入力しています。
選択肢が多い場合には別のシートで一覧表を作成し、条件で「リストを範囲で指定」を選んで一覧表のセル範囲を入力してください。
②図形挿入・スクリプト割り当て/スプレッドシート
トリガー設定について前回触れませんでしたが、修了証の作成は決まった日時に発生する業務ではありませんし、一番はじめに行う「❶修了者リストを作成」の工程が手作業であることから、スプレッドシート内にGASを実行するための実行ボタンを設置してあげたいと思います。
(1)図形で実行ボタンをつくりましょう
(2)挿入した図形とスクリプト(コード)を紐づけます
(3)動作確認をしましょう
③テーマ編集方法/スライド
前回の記事で「編集したいもの以外のテキストボックスや画像は「表示」タブ→「テーマ作成ツール」にて作成しておいてください」と説明しましたが、使用したことがない方もいらっしゃると思いますので簡単に触れておきたいと思います。
(この方法で編集しておかないと、とうまく画像変換できずエラーになるかと思います)
そもそもこちらの修了証テンプレートがどういう状態かというと、水色の枠で囲んだテキストボックスは編集可能な状態です。ただし、緑の枠で囲んだテキストボックスや図形、背景画像については編集できません。
通常の画面で編集できないパーツについては、「表示」タブ→「テーマ作成ツール」で開いたこちらの画面で編集を行なっています。
※1)MicrosoftのPowerPointで言う所の「スライドマスター」が似たような機能です(→詳細はこちら)。
※2)テーマ作成ツールについて、Googleの公式ヘルプページはこちらです。
******************************
ちなみに、もっとスマートな解決手段を詳しい人に教えてもらったのでご紹介します🐰✨
画像変換の際に起きるエラーを私は③の方法でスライド側を工夫することで解決したのですが、こちらはコードで解決するやり方です💡
追記するのはここの部分です。
//スライドのテキストボックス(シェイプ)を取得
for(var shape_no=0;shape_no<pageElements.length;shape_no++){
//指定のフォーマットの文字列を置換(★で指定したID,置換後テキスト)
pageElements[shape_no].asShape().getText().replaceAllText(id_name, name); //テキスト置換1
pageElements[shape_no].asShape().getText().replaceAllText(id_program, program); //テキスト置換2
pageElements[shape_no].asShape().getText().replaceAllText(id_report_date,fhinishdate ); //テキスト置換3
}
3行目にテキストボックス以外の画像や線は処理をスキップさせるためのコードを追記することでエラーを回避できるようになります。
//スライドのテキストボックス(シェイプ)を取得
for(var shape_no=0;shape_no<pageElements.length;shape_no++){
if(pageElements[shape_no].getPageElementType().toString() === "SHAPE") { //シェイプの場合のみテキスト置換する(画像や線は処理スキップ)
//指定のフォーマットの文字列を置換(★で指定したID,置換後テキスト)
pageElements[shape_no].asShape().getText().replaceAllText(id_name, name); //テキスト置換1
pageElements[shape_no].asShape().getText().replaceAllText(id_program, program); //テキスト置換2
pageElements[shape_no].asShape().getText().replaceAllText(id_report_date,fhinishdate ); //テキスト置換3
}
*さいごに
実際の業務で使用しているGASでは、修了証の作成に加えて受講後レポート(こちらもGoogleスライドで作成)の下書きと、GASが実行完了した際のSlack通知までがセットになっているのですが、全てをご紹介するには長すぎるので割愛させていただきました。
拙いコードではありますが何かの参考にして頂けましたら幸いです。それではまたお会いしましょう🌸
******************************
🐰前回の記事🐰
🐰おすすめ記事🐰