この記事について
GASでGoogleドキュメントを操作する時の良く使う構文の個人的メモです。
より詳細な解説は下記の記事にまとめています。
基本構文
DocumentAppの下にbodyがあって、Paragraph(パラグラフ:段落)がある。Paragraphの中に文章(text)だったり、表だったり画像がある。
基本的にテキストの操作はParagraph単位で行う
ドキュメントを開く
//Googleドキュメントを開く
var doc = DocumentApp.openById("ID");
var doc = DocumentApp.openByUrl("url");
テキストを編集する
var paragraphs = body.getParagraphs();
var p1 = paragraphs[0]
//段落にテキストを挿入する。
p1.insertText( 0, "text" );
//段落にテキストを追加する。
p1.appendText("text");
ドキュメントを保存する
Goolgeドキュメントは基本的に即自的に変更が確定されるが、GASで操作する時はsaveしないと変更が確定しないことがあるので変更したら明示的に保存した方が良い。
var doc = DocumentApp.openById(file.id);
doc.saveAndClose();
よく使う処理
指定のフォルダに新規Googleドキュメントを作成する
var folder = DriveApp.getFolderById("folderId");
var doc = DocumentApp.create("doc name");
var docFile = DriveApp.getFileById(doc.getId());
folder.addFile(docFile);
文章の最後に文章を追記する
var body = DocumentApp.getActiveDocument().getBody();
body.appendPageBreak();//ページ区切りを入れる
body.appendParagraph("hogehoge");//段落をアペンドする
文章の最初に文章を挿入する
var body = DocumentApp.getActiveDocument().getBody();
body.insertParagraph(0, "hogehoge"); //段落番号を0が文章の最初
段落ごとに処理する
//段落ごとに翻訳してみる。
var body = DocumentApp.getActiveDocument().getBody();
var paragraphs = body.getParagraphs();
var textBefore ; // 翻訳前テキスト
var textTranslated ; // 翻訳後テキスト
paragraphs.forEach( p => {
textBefore = p.getText();
if (textBefore != ""){
textTranslated = LanguageApp.translate(textBefore, "ja", "en");
p.setText(textTranslated);
};
表を差し込む
function createDoc() {
var doc = DocumentApp.create('Sample Document');
var body = doc.getBody();
var rowsData = [['Plants', 'Animals'], ['Ficus', 'Goat'], ['Basil', 'Cat'], ['Moss', 'Frog']];
body.insertParagraph(0, doc.getName())
.setHeading(DocumentApp.ParagraphHeading.HEADING1);
table = body.appendTable(rowsData);
table.getRow(0).editAsText().setBold(true);
}
文字列置換・テンプレート文章の置換
テンプレートを用意しておき、文字列置換で文章を作成する時に便利
/*
/テンプレートとなるGdocファイル新規作成する
*/
function createTemplate() {
var body = DocumentApp.getActiveDocument().getBody();
//置換用文字列
body.appendParagraph('{name}');
body.appendParagraph('{address}');
body.appendParagraph('{city} {zip}');
}
/*
/上で作成したテンプレートの置換用文字列を指定の文字列に置換する
*/
function searchAndReplace() {
var body = DocumentApp.getActiveDocument()
.getBody();
var client = {
name: 'お客様 タロウ',
address: '新宿',
city: '東京',
zip: 'xxx-xxxx'
};
body.replaceText('{name}', client.name);
body.replaceText('{address}', client.address);
body.replaceText('{city}', client.city);
body.replaceText('{zip}', client.zip);
}
現在のカーソル位置に文章を挿入する
var doc = DocumentApp.getActiveDocument();
doc.getCursor().insertText(text);
//getcusorはアクティブドキュメントにしか使用できない
ファイル名操作
var doc = DocumentApp.getActiveDocument();
doc.getBlob().getName(); //拡張子あり。
doc.getName(); //上と一緒。拡張子なし。