gpt4 book ai didi

javascript - 使用 JS 在 Google Apps 脚本文档中查找未知字符串并将其更改为大写

转载 作者:行者123 更新时间:2023-11-30 12:39:49 25 4
gpt4 key购买 nike

我写在 Fountain markdown http://fountain.io/在谷歌文档中。喷泉是用来写剧本的。我想通过将某些元素自动大写(打开或使用按钮,等等),使在喷泉中书写更加友好。

这是一个格式正确的剧本(在喷泉中):

EXT. GAS STATION - DAY

Susie steps out of her car and walks toward the station attendant.

SUSIE
Hey, Tommy.

TOMMY
Where you been, Sue? Come on in.

They walk toward the station entrance together.

INT. GAS STATION - NIGHT

etc...

如您所见,编剧中有大量的 CAPS-LOCK 和 SHIFT 业务,而且变得乏味。

这就是为什么我想用小写字母书写(即 int.gas station - day)并让 javascript/GAS 找到该文本并将其大写。与 Angular 色说话时相同:

susie
Hey, Tommy.

会变成

SUSIE
Hey, Tommy.

说话的 Angular 色在他们的名字上方总是有一个空行,在下一行是文本。场景标题总是以 EXT 开头。或 INT。

到目前为止,我在 Stackoverflow 上得到了一些帮助,但我仍在努力让它发挥作用。我得到了一个很棒的正则表达式字符串,可以找到字符名称,但 GAS 的正则表达式实现有限。该正则表达式是 [\n][\n]([^\n]+)[\n][^\n|\s]/gi。我没有运气用正则表达式替换文本。我的 JS 技能是刚出生的婴儿,但我已经完成了 CodeAcademy 的初学者 JS 类(class),这是值得的。

如能在正确的方向上提供任何帮助,我将不胜感激。

最佳答案

要更改 Google 文档中的文本,您需要获取各个元素并对它们进行操作。在 Money Shot 之前,还有一些工作要做,深入研究文档:

paragraphText.toUpperCase();

以下脚本是文档附件的一部分,源代码在 this gist 中可用, 在 changeCase.js 中。

代码.gs

/**
* Scan Google doc, applying fountain syntax rules.
* Caveat: this is a partial implementation.
*
* Supported:
* Character names ahead of speech.
*
* Not supported:
* Everything else. See http://fountain.io/syntax
*/
function fountainLite() {
// Private helper function; find text length of paragraph
function paragraphLen( par ) {
return par.asText().getText().length;
}

var doc = DocumentApp.getActiveDocument();
var paragraphs = doc.getBody().getParagraphs();
var numParagraphs = paragraphs.length;

// Scan document
for (var i=0; i<numParagraphs; i++) {

/*
** Character names are in UPPERCASE.
** Dialogue comes right after Character.
*/
if (paragraphLen(paragraphs[i]) > 0) {
// This paragraph has text. If the preceeding one was blank and the following
// one has text, then this paragraph might be a character name.
if ((i==0 || paragraphLen(paragraphs[i-1]) == 0) && (i < numParagraphs && paragraphLen(paragraphs[i+1]) > 0)) {
var paragraphText = paragraphs[i].asText().getText();
// If no power-user overrides, convert Character to UPPERCASE
if (paragraphText.charAt(0) != '!' && paragraphText.charAt(0) != '@') {
var convertedText = paragraphText.toUpperCase();
var regexEscaped = paragraphText.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); // http://stackoverflow.com/a/3561711/1677912
paragraphs[i].replaceText(regexEscaped, convertedText);
}
}
}
}
}

关于javascript - 使用 JS 在 Google Apps 脚本文档中查找未知字符串并将其更改为大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24847408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com