Google apps script 在Google应用程序脚本中存储文档中的值数组
我是一个使用谷歌应用程序脚本从谷歌文档中提取数据的初学者,我需要一些帮助 我有一个谷歌文档,里面有很多烹饪食谱。我想写一个函数,随机选择4个食谱,并通过电子邮件告诉我配料,这样我就知道那周该买什么了。我所有的食谱标题都是“标题3”,下面的要点是配料。如果需要,我完全愿意修改格式 我想我有办法识别所有类型为“标题3”的文本,但我需要一种方法将它们作为文本存储在数组中,然后随机选择其中4个。我似乎无法解决这个问题Google apps script 在Google应用程序脚本中存储文档中的值数组,google-apps-script,google-docs,Google Apps Script,Google Docs,我是一个使用谷歌应用程序脚本从谷歌文档中提取数据的初学者,我需要一些帮助 我有一个谷歌文档,里面有很多烹饪食谱。我想写一个函数,随机选择4个食谱,并通过电子邮件告诉我配料,这样我就知道那周该买什么了。我所有的食谱标题都是“标题3”,下面的要点是配料。如果需要,我完全愿意修改格式 我想我有办法识别所有类型为“标题3”的文本,但我需要一种方法将它们作为文本存储在数组中,然后随机选择其中4个。我似乎无法解决这个问题 function onOpen() { var ui = DocumentApp.
function onOpen() {
var ui = DocumentApp.getUi();
ui.createMenu('Generate Weekly Shopping List')
.addItem('Send Email', 'generateMenu')
.addToUi();
}
function generateMenu() {
var ps = DocumentApp.getActiveDocument().getBody()
var searchType = DocumentApp.ElementType.PARAGRAPH;
var searchHeading = DocumentApp.ParagraphHeading.HEADING3;
var searchResult = null;
while (searchResult = ps.findElement(searchType, searchResult)) {
var par = searchResult.getElement().asParagraph();
if (par.getHeading() == searchHeading) {
// Found one, update Logger.log and stop.
var h = searchResult.getElement().asText().getText();
return h;
//how do I store this back into an array...then randomly select 4?
}
// Get the email address of the active user - that's you.
var email = Session.getActiveUser().getEmail();
// Send yourself an email with a link to the document.
GmailApp.sendEmail(email, "Shopping List For The Week", "Here is the shopping list:" + h);
}
}
第一个函数从文档生成一个对象数组
function generateObj() {
var body = DocumentApp.getActiveDocument().getBody()
var children=body.getNumChildren();
//var html='';
var rObj={rA:[]}
for(var i=0;i<children;i++) {
var child=body.getChild(i);
if(child.getType()==DocumentApp.ElementType.PARAGRAPH && child.asParagraph().getHeading()==DocumentApp.ParagraphHeading.HEADING3 && child.asParagraph().getText().length>0) {
//html+='<br />' + child.asParagraph().getText();
var prop=child.asParagraph().getText();
rObj.rA.push(prop);
rObj[prop]=[];
var n=1;
while(body.getChild(i+n).getType()==DocumentApp.ElementType.LIST_ITEM) {
//html+='<br />'+body.getChild(i+n).asListItem().getText();
rObj[prop].push(body.getChild(i+n).asListItem().getText());
n++;
}
i+=n-1;
}
}
//DocumentApp.getUi().showModelessDialog(HtmlService.createHtmlOutput(html), 'Results')
return rObj;
}
//defaults to 4 selections
function pikn(n=4) {
var rObj=generateObj();//get array of objects
var rA=[];
var t=rObj.rA.slice();//copy array to temp array
for(var i=0;i<n;i++) {
var idx=Math.floor(Math.random()*t.length);//pick random index
rA.push(t[idx]);//save title of recipe
t.splice(idx,1);//remove that index
}
var s='';
//loop through selected recipes which are also object properties
rA.forEach(function(r,i){
var items=rObj[r];
s+='\n' + r;
items.forEach(function(item,j){s+='\n' + item});//loop through recipe items and collect everything in s as simple text to insert into standard body
});
GmailApp.sendEmail("Your email address","Random Recipes",s);
}
函数生成器bj(){
var body=DocumentApp.getActiveDocument().getBody()
var children=body.getNumChildren();
//var html='';
var rObj={rA:[]}
对于(var i=0;i0){
//html+='
'+child.aspragraph().getText();
var prop=child.asParagraph().getText();
rObj.rA.推(支柱);
rObj[prop]=[];
var n=1;
while(body.getChild(i+n).getType()==DocumentApp.ElementType.LIST_项){
//html+='
'+body.getChild(i+n.asListItem().getText();
rObj[prop].push(body.getChild(i+n).asListItem().getText());
n++;
}
i+=n-1;
}
}
//DocumentApp.getUi().showModelessDialog(HtmlService.createHtmlOutput(html),“结果”)
返回rObj;
}
//默认为4个选项
函数pikn(n=4){
var rObj=generateObj();//获取对象数组
var rA=[];
var t=rObj.rA.slice();//将数组复制到临时数组
对于(var i=0;i