Apps Scriptリファレンス: Apps Script Reference |障害・課題追跡: IssueTracker |Google Workspace: Status Dashboard - Summary

2024年11月10日日曜日

Googleドキュメントの指定した位置にテキストを追加したい(特定の見出しセクションにテキストを追加する)


指定したGoogleドキュメント内の
見出しBセクションにある標準テキストに
一行追加したくて書いたコードです。


ChatGPTとGeminiと何度かやり取りしながら、プロンプトを書くのに試行錯誤しました。
途中で手動修正も入れつつ、動くコードが書けました。



Apps Script


Code.gs
function myFunction() {
var target = "見出しB";
var addText = "テキスト3";
appendTextToList(target, addText);
}

function appendTextToList(target, addText) {
var documentUrl = 'GOOGLE_DOCUMENT_URL';
var doc = DocumentApp.openByUrl(documentUrl);
var body = doc.getBody();

var paragraphs = body.getParagraphs();
var insertIndex = -1;
var standardTexts = [];

for (var i = 0; i < paragraphs.length; i++) {
var text = paragraphs[i].getText();

if (text === target && paragraphs[i].getHeading() == DocumentApp.ParagraphHeading.HEADING3) {
insertIndex = i;

// target配下にある標準テキストを取得
for (var j = i + 1; j < paragraphs.length; j++) {
var nextText = paragraphs[j].getText();
if (paragraphs[j].getHeading() == DocumentApp.ParagraphHeading.NORMAL && nextText !== '') {
standardTexts.push(nextText);
} else {
break;
}
}
break;
}
}
body.insertParagraph(insertIndex + (standardTexts.length + 1), addText);
}


Tips


見出し3の直下に追加したい場合は、標準テキストの取得は不要。

function myFunction() {
var target = "見出しB";
var addText = "テキスト3";
appendTextToList(target, addText);
}

function appendTextToList(target, addText) {
var documentUrl = 'GOOGLE_DOCUMENT_URL';
var doc = DocumentApp.openByUrl(documentUrl);
var body = doc.getBody();

var paragraphs = body.getParagraphs();
var insertIndex = -1;
for (var i = 0; i < paragraphs.length; i++) {
var text = paragraphs[i].getText();

if (text === target && paragraphs[i].getHeading() == DocumentApp.ParagraphHeading.HEADING3) {
insertIndex = i;
break;
}
}
body.insertParagraph(insertIndex + 1, addText);
}


Reference

Enum ParagraphHeading

Latest post

Googleドキュメントに見出しを追加したい

今回の例では、ドキュメントの末尾に「見出しD」 を追加します。 見出しA, B, C, Dのスタイルは、見出し3 ( HEADING3 ) に設定しています。  下記Code.gsの  GOOGLE_DOCUMENT_URL を設定して  addHeadingToEnd()  を...