指定した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