我在Google文档中的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找到该文本并将其大写。与角色说话时相同:
susie
Hey, Tommy.
会变成
SUSIE
Hey, Tommy.
说话的人物总是在他们的名字和下一行的文字上面有一个空行。场景标题始终以EXT开头。或INT。
到目前为止,我已经在Stackoverflow上得到了一些帮助,但我仍然在努力让这个工作得以实现。我得到了一个很好的正则表达式字符串,可以找到字符名称,但GAS的正则表达式实现有限。正则表达式是[\n][\n]([^\n]+)[\n][^\n|\s]/gi
。我没有运气用正则表达式替换文本。我的JS技能是刚出生的宝贝,但是我已经完成了CodeAcademy的初学者JS课程,这是值得的。
我会很感激在正确的方向上提供任何帮助。
答案 0 :(得分:3)
要更改Google文档中的文字,您需要获取各个元素并对其进行操作。在Money Shot之前,需要做很多工作,深入研究文档:
paragraphText.toUpperCase();
以下脚本是changeCase.js
中/**
* 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);
}
}
}
}
}
中可用文档加载项的一部分。
{{1}}
答案 1 :(得分:0)
CHAR
这是用来使DOCS中的表元素大写的原因!