見出し画像

【イチからDX】GASでGoogleスライドのテキスト置換・画像変換に挑戦してみた〜補足説明編

※こちらの記事は前回の続きとなっております。


*はじめに

こちらの記事で補足説明させて頂く内容としては以下の通りです。

①プルダウン設定方法/スプレッドシート
②図形挿入・スクリプト割り当て/スプレッドシート
③テーマ編集方法/スライド

今回の業務自動化にあたり予め用意したもの


①プルダウン設定方法/スプレッドシート

GASとは直接関係ありませんが、修了者リストのG2セルで使用しています。
(入力を楽にする・入力ミスを防ぐといった目的で選択形式にしています)

該当セルを一度クリックして選択し、「データ」タブ→「データの入力規則」をクリックしてください。

今回は選択肢が3つだけなので、条件で「リストを直接指定」を選んで選択肢となるプログラム名を入力しています。
選択肢が多い場合には別のシートで一覧表を作成し、条件で「リストを範囲で指定」を選んで一覧表のセル範囲を入力してください。

詳しくは公式のヘルプページをご覧ください🐰
https://support.google.com/docs/answer/186103?hl=ja&co=GENIE.Platform%3DDesktop


②図形挿入・スクリプト割り当て/スプレッドシート

トリガー設定について前回触れませんでしたが、修了証の作成は決まった日時に発生する業務ではありませんし、一番はじめに行う「❶修了者リストを作成」の工程が手作業であることから、スプレッドシート内にGASを実行するための実行ボタンを設置してあげたいと思います。

他のアシスタントが作業する可能性もありますので、
GASを知らなくても使えるようにします🐰🌸

(1)図形で実行ボタンをつくりましょう

挿入タブ→図形描画をクリック
図形を挿入し適当なテキストを入力したら
右上の「保存して終了」をクリックして画面を閉じます

(2)挿入した図形とスクリプト(コード)を紐づけます

図形をクリックし、右上のボタンから「スクリプトを割り当て」を選択
一旦コード編集画面を開き、オレンジで下線を引いた部分をコピー
スプレッドシートに戻り、ペーストして「OK」をクリックします。

(3)動作確認をしましょう

実行ボタンをクリックするとGASが実行されます。
割り当てるスクリプトを変更したい時は、ボタンの上で右クリックすると
GASは実行されずに先程の「スクリプトを割り当て」画面を開くことができます。


③テーマ編集方法/スライド

前回の記事で「編集したいもの以外のテキストボックスや画像は「表示」タブ→「テーマ作成ツール」にて作成しておいてください」と説明しましたが、使用したことがない方もいらっしゃると思いますので簡単に触れておきたいと思います。
(この方法で編集しておかないと、とうまく画像変換できずエラーになるかと思います)

そもそもこちらの修了証テンプレートがどういう状態かというと、水色の枠で囲んだテキストボックスは編集可能な状態です。ただし、緑の枠で囲んだテキストボックスや図形、背景画像については編集できません。

通常の画面で編集できないパーツについては、「表示」タブ→「テーマ作成ツール」で開いたこちらの画面で編集を行なっています。

※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通知までがセットになっているのですが、全てをご紹介するには長すぎるので割愛させていただきました。

拙いコードではありますが何かの参考にして頂けましたら幸いです。それではまたお会いしましょう🌸


******************************

🐰前回の記事🐰


🐰おすすめ記事🐰



いいなと思ったら応援しよう!