Google apps script 在Google应用程序脚本中存储文档中的值数组

Google apps script 在Google应用程序脚本中存储文档中的值数组,google-apps-script,google-docs,Google Apps Script,Google Docs,我是一个使用谷歌应用程序脚本从谷歌文档中提取数据的初学者,我需要一些帮助 我有一个谷歌文档,里面有很多烹饪食谱。我想写一个函数,随机选择4个食谱,并通过电子邮件告诉我配料,这样我就知道那周该买什么了。我所有的食谱标题都是“标题3”,下面的要点是配料。如果需要,我完全愿意修改格式 我想我有办法识别所有类型为“标题3”的文本,但我需要一种方法将它们作为文本存储在数组中,然后随机选择其中4个。我似乎无法解决这个问题 function onOpen() { var ui = DocumentApp.

我是一个使用谷歌应用程序脚本从谷歌文档中提取数据的初学者,我需要一些帮助

我有一个谷歌文档,里面有很多烹饪食谱。我想写一个函数,随机选择4个食谱,并通过电子邮件告诉我配料,这样我就知道那周该买什么了。我所有的食谱标题都是“标题3”,下面的要点是配料。如果需要,我完全愿意修改格式

我想我有办法识别所有类型为“标题3”的文本,但我需要一种方法将它们作为文本存储在数组中,然后随机选择其中4个。我似乎无法解决这个问题

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