【GAS】サイドバーの例文集から文を選択してドキュメントに挿入する方法

GAS

どうもcoto.です。
今回はGドキュメント上でのサイドバーに関連したGASを少々。

やりたいこと

① Gドキュメントを開く
② サイドバーに設置されたドロップダウンから例文を選ぶ
③ 挿入ボタンを押す
④ Gドキュメントに②で選んだ例文が転記される
※「カーソル位置に挿入」はボタン押下の直前にカーソルがある位置、「末尾に挿入」はドキュメントの最後にそれぞれ例文が転記されます。

今回のコードでできること

コード

GAS(gs)側のコード

//サイドバーを表示
function Sidebar() {
  var htmlOutput = HtmlService.createTemplateFromFile('index').evaluate().setTitle('例文');
  DocumentApp.getUi().showSidebar(htmlOutput);
}

//カーソル位置挿入ボタン用
function insertText(text){ 
  DocumentApp.getActiveDocument().getCursor().insertText(text + ' ');   //追加した分の後ろに半角スペースを入れる
}


//末尾挿入ボタン用
function insertText2(text){
  var para = DocumentApp.getActiveDocument().getBody().getParagraphs();
  var paralength = para.length;
  var p1   = para[paralength-1];
  p1.appendText(text + ' ');  //追加した分の後ろに半角スペースを入れる
}

特にファイル名の指定はありません。

HTML側のコード

このhtmlの内容でサイドバー内の表示を制御します。装飾などもお好みで。ちなみにhtmlのファイル名はGAS側で指定している通り「index.html」です。

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <select id="extext">
      <option value="はじめまして">はじめまして</option>
      <option value="こんにちは">こんにちは</option>
      <option value="さようなら">さようなら</option>
    </select>

    <div>
      <button onclick= "insertbutton()">カーソル位置に挿入</button>&nbsp;
      <button onclick= "insertbutton2()">末尾に挿入</button>
    </div>


<!-- ボタンの挙動 -->    
    <script>    
      function insertbutton(){
         var seltext = document.getElementById("extext").value;          //選択した例文を取得
         google.script.run.insertText(seltext);
      }

      function insertbutton2(){
         var seltext = document.getElementById("extext").value;          //選択した例文を取得
         google.script.run.insertText2(seltext);
      }         
    </script>


  </body>
</html>

今回はドロップダウンの中身をHTMLで直接作成していますが、選択肢を頻繁に編集するならスプレッドシートと紐づけた方が便利です。

過去に似たような方法を紹介しているのでご参考まで。

少しだけ解説

それほど複雑なコードではありませんがボタンを押した後の挙動について少々。

①「カーソル位置に挿入」ボタンを押した場合:HTML側 「function insertbutton()」→GAS側「function insertText(text)」

②「末尾に挿入」ボタンを押した場合:HTML側 「function insertbutton2()」→GAS側「function insertText2(text)」

のようにそれぞれ動きます。

挿入文の直後に半角スペースが入るようにしてあるのは、もともと英文用だからです。日本語用に使うのであれば不要かと思います。

お好みで

スプレッドシートでサイドバーを表示するときにはたいていボタン式にするのですが、Gドキュメントではボタンの設置が(たぶん)できません。

したがって、Gドキュメントを開くと自動でサイドバーも開くようなトリガーを設定しておく方が便利なことが多いです。

設定方法は、GAS画面の左メニューからトリガーを選択し、

トリガーを押す

以下のようにするだけです。

Gドキュメント起動時にサイドバーが自動で開くようにする

御託

こんなに例文多用して文章作ることがあるのか…?とお思いかもしれませんが、案外あるんですよ。論文の合成項とかね!!

あ、今思ったけど選択値に対応するフォーマットがバーッと構築されるとか…いやそれなら最初からフォーマットごとでドキュメント作っておいた方がいいな。

まあ目的はともかく、何かの参考になれば幸いです。

コメント