見出し画像

ドキュメントを操作してます GAS

操作感に再びワクワク。

こんにちは。サキナオコです^ ^
雨が降ったかと思えば、晴れたり曇ったりしてますね。

いつもご覧いただき、スキ、フォロー、コメント、サポート、オススメまでも本当にほんとうにどうもありがとうございます*^o^*
おかげさまで眠気に打ち克ち今日も投稿できました!!^o^/

はい、ドキュメントの章、
階層構造は
DocumentApp-Document-Section(HeaderSection,Body,FooterSection)-Paragraph,ListItem-Text

リスティテムってなんだ?と今思い、よく見たらリストアイテムでした。

ドキュメントの中に文書の本体エリアを表すセクション(ボディ、ヘッダー、フッター)があり、
セクションはその中に段落をもてる。
段落の中にテキストや画像などコンテンツを配置できる。
階層のTextとは文字列でなくTextオブジェクトであると。

はい、オッケーです!

次、トップレベルオブジェクトであるDocumentAppクラス。
ドキュメントを取得するためにアクティブドキュメント、ID、URLでそれぞれ取得する写経。

その次、Documentクラス。
ドキュメント情報の取得、写経。
addHeaderメソッド、addFooterメソッドでヘッダーとフッターセクションを追加の写経。

ヘッダーとフッターを操作で作ることができて、また例のスプレッドシートのあの感覚が蘇りました。
「私、他から操作している!」

もっと操作感を得たくなり、セクションの末尾に水平線を追加というappendHorizontalRuleで水平線を追加してみました。
水平線が引かれています!!*^o^*楽しい!

こうなったらやはりあれです、画像も入れたいところです。
うーん、見当たらないのでwebで探します。
ありました。

// ...略
const image = DriveApp.getFileById('画像のID').getBlob();
const img = document.insertImage(0, image); 
// ...略

getBlobを使ったあと、insertImageを使っているようです。
getBlobはオブジェクトをblobとして返すという意味で、
Blob 型 (blob: binary large object) とはファイル名と MIME 型の指定がついた万能なデータ型とのこと。

このBlobとかいうのを使わないで、ひたすらappendImageとかやっていましたが、うまくいきませんでした。

画像を入れるにはBlob型というものにしてからドキュメントに追加するという手順を踏む必要があるのでしょうか。…面倒です。

それでもとにかく、画像が追加されていました!*^o^*嬉しい!

スクリーンショット 2021-10-10 13.38.08

あと欲張ってリストも入れちゃおう!と思いましたが、何個も入れるにはどうするのかがわからず…後日またやります。

同じスクリプトを実行していたら、ドキュメントがごちゃごちゃになり、消去したくなりました。

どうしても、完全に消去できず、困った時のweb頼みで英語の質問コーナーより何かよくわからないままコピペしてみたらうまくいきました。感謝感謝です!

function emptyDocument() {
 const document = DocumentApp.getActiveDocument();
 const body = document.getBody();
 body.appendParagraph('');
 while (body.getNumChildren() > 1) body.removeChild( body.getChild( 0 ) );
}

ということで、本日これにて終了!




この記事が気に入ったらサポートをしてみませんか?