[GAS] Googleドキュメントで全消去の後appendParagraphしたら先頭に空行ができる

記事
IT・テクノロジー

はじめに

久しぶりにGoogleドキュメントへGAS構築する機会がありましたので、小ネタ扱いの備忘録です。Googleドキュメント関連ではあまりピンポイントな情報にたどり着けないことが多いので、できる限り具体的な内容のタイトルにしてみました。

なお、本記事はQiitaで公開した記事の要約・補足版となります。

問題点

ドキュメント上で全消去の後、appendParagraphにて段落データを順次追記するというスクリプトを実行したところ、先頭に空行ができてしまいました。これを削除したい、もしくは空行を出さずにスマートに先頭から追加できないか、についての検証です。

そもそもドキュメントの仕様上、初期状態では空段落が最初から存在している状態です。そこにappendParagraphしていくわけなので、当然の結果です。

同様のことはinsertParagraphでも起きます。insertParagraphの場合は先頭行ではなく、末尾が空行になります。元々あった空行がinsertParagraphによって押し出されるような感じになるので、これも当然の結果です。

解決策について

以下の2パターンについて検証してみました。

1-順次処理の後でBody.removeChildする
2-先頭(もしくは末尾)のみ元の空行と差し替える

1-順次処理の後でBody.removeChildする

Body直下の子要素を削除するremoveChildを使用します。引数にChildを取りますので、Body.getChild(インデックス値)でChildとして渡します。

先頭段落を削除する場合、Body.removeChild(Body.getChild(0))とします。
最終段落を削除する場合、Body.removeChild(Body.getChild(Body.getParagraphs().length-1))で構文的には合っていますが、最終段落は削除できない仕様のようで、実行するとエラーになります。

2-先頭(もしくは末尾)のみ元の空行と差し替える

結果は想定通りでしたが、removeChildしたくないことにこだわったことで、かえって面倒くさいことをしている印象でした。この方法は個別案件における何らかの優位性がない限りは使うことはないでしょう。

GAS開発に関するご依頼やご相談も歓迎いたします


サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す ココナラコンテンツマーケット ノウハウ記事・テンプレート・デザイン素材はこちら