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

2024年11月11日月曜日

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


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


下記Code.gsの GOOGLE_DOCUMENT_URL を設定して addHeadingToEnd() を実行すると、見出しDが追加されます。



Code.gs
function addHeadingToEnd() {
var docUrl = 'GOOGLE_DOCUMENT_URL';
var doc = DocumentApp.openByUrl(docUrl);
var body = doc.getBody();
body.appendParagraph('見出しD').setHeading(DocumentApp.ParagraphHeading.HEADING3);
}



Reference

Googleドキュメントの見出しを取得したい

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

Googleドキュメントの見出しを取得したい


今回の例では、見出しA, 見出しB, 見出しC はテキストのスタイルを「見出し3」 (HEADING3) に設定しています。
テキスト1, テキスト2は「標準テキスト」です。



下記Code.gsの GOOGLE_DOCUMENT_URL を設定して testGetTargetHeadingText() を実行すると、
見出しA, 見出しB, 見出しC がログに出力されます。




Apps Script


Code.gs
// 使用例
function testGetTargetHeadingText() {
var docUrl = 'GOOGLE_DOCUMENT_URL';
var targetHeadingTexts = getTargetHeadingText(docUrl);
Logger.log(targetHeadingTexts.join(", "));
}

function getTargetHeadingText(docUrl) {
var doc = DocumentApp.openByUrl(docUrl);
var body = doc.getBody();
// 全ての段落を取得
var paragraphs = body.getParagraphs();
var targetHeadingTexts = [];
var targetHeading = DocumentApp.ParagraphHeading.HEADING3;
// 各段落のスタイルを確認して、target見出しのテキストを取得
paragraphs.forEach(function(paragraph) {
if (paragraph.getHeading() === targetHeading) {
targetHeadingTexts.push(paragraph.getText());
}
});

return targetHeadingTexts;
}


Reference

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

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()  を...