我正试图在google docs的谷歌应用程序脚本中添加一种“打字机效果”。我想让它输入文本,在这种情况下是一个维基百科文章,好像用户正在键入它,所以添加一个延迟。不幸的是函数appendText(),即使你使用Utilities.sleep,它仍然只是在脚本完成后立即输出整篇文章。我会用什么功能来完成这样的事情?
function onOpen(e) {
DocumentApp.getUi().createAddonMenu()
.addItem('Start', 'myFunction')
.addToUi();
}
function onInstall(e) {
onOpen(e);
}
function myFunction() {
var body = DocumentApp.getActiveDocument().getBody();
var text = body.editAsText();
var response = UrlFetchApp.fetch('https://en.wikipedia.org/w/api.php?&format=json&action=query&generator=random&grnnamespace=0&prop=title&grnlimit=1');
var json = JSON.parse(response);
for (key in json.query.pages) {
var title = json.query.pages[key].title;
}
var url = 'https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&explaintext=&titles=' + title
var response2 = UrlFetchApp.fetch(url);
var json2 = JSON.parse(response2);
for (key in json2.query.pages) {
var content = json2.query.pages[key].extract;
}
//content = content.replace(/==.*==/, '====')
var all = title + '\n' + content;
text.appendText("Start\n");
Utilities.sleep(1000);
text.appendText(content);
}
答案 0 :(得分:1)
我试过@ZigMandel的建议。它似乎有效但文本是从左侧输入的。
stripe = @subscription.build_stripe ...
答案 1 :(得分:0)
要让脚本打印出每个字符之间的延迟,您可以将睡眠方法置于for循环中。
for(var i = 0; i < content.length; i++) {
text.appendText(content[i]);
Utilities.sleep(200);
}
我认为这可以为您提供所需的效果。
答案 2 :(得分:0)
您需要刷新文档。 DocumentApp API没有flush方法(如SpreadsheetApp),但您仍然可以使用 saveAndClose 刷新它,然后重新打开文档(例如使用document = DocumentApp.openById(&#34;本身份识别码&#34)
当脚本完成时会自动调用saveAndClose,但不会在您进行每次更改后自动调用,因为Google会根据性能对这些更改进行批处理。
https://developers.google.com/apps-script/reference/document/document