Google Apps脚本页眉/页脚清除和替换

时间:2017-10-17 12:58:41

标签: google-apps-script google-docs

我有一个脚本可以在发布新文档版本时更新Google Docs的页眉和页脚(通过从AODocs插件中检索参数)。

我的问题是footer.clear()方法似乎没有删除标题(或页脚)并在该部分的顶部留下回车符。后续版本在页脚空间中保持“增长”。

这是一个已知问题吗?我做错了吗? (我从模板中拉出一条线,这样我也可以进行分页。

以下是页脚部分的代码段:

var footerTemplate = headerFooterTemplateDoc.getFooter();
var footerParagraphs = footerTemplate.getParagraphs();

// Bring in Parameters
var title = request.parameter.title;
var owner = request.parameter.owner;
var revDate = request.parameter.revDate;
var version = request.parameter.version;
var driveFileID = request.parameter.driveFileID;   

if (!DocumentApp.openById(driveFileID).getFooter()) {
 var footer = DocumentApp.openById(driveFileID).addFooter();
 } else {
 var footer = DocumentApp.openById(driveFileID).getFooter();
 footer.clear();
 }

//Write the values
footer.clear();
footer.appendHorizontalRule();
footer.appendParagraph(footerParagraphs[0].copy());
footer.appendParagraph('Title: ' + title + ' - Owner: ' + owner);
footer.appendParagraph('Version: ' + version + ' - Last Revised: ' + revDate).setSpacingAfter(18);

2 个答案:

答案 0 :(得分:1)

从Apps Script的角度来看,Google Doc的结构与HTML文档非常相似。 Google文档包含3个主要部分。

  • 身体部分
  • 标题栏目
  • 页脚部分

这些部分中的每一部分都可能包含不同的元素。

因此,如果您要清除Google文档中的所有元素,则必须清除其每个部分中的所有元素。

function ClearAllSectionsOfDocument() {

  var doc = DocumentApp.getActiveDocument(); 
  var bodySection = doc.getBody()
  var headerSection = doc.getHeader()
  var footerSection = doc.getFooter()

  try {
     bodySection.clear();         
    } catch (e) {
     // case last element in body is partial and can't be cleared
     bodySection.appendParagraph("");
     bodySection.clear()
    }

  try {
     headerSection.clear();         
    } catch (e) {
     // case last element in header is partial and can't be cleared
     headerSection.appendParagraph("");
     headerSection.clear()
    }

  try { 
    footerSection.clear();  
    } catch (e) {
     // case last element in footer is partial and can't be cleared
     footerSection.appendParagraph("");
     footerSection.clear()
    }

}

答案 1 :(得分:0)

我使用此脚本,它运行良好:

async function learnLinear(records){
  const model = tf.sequential();
  const learningRate = 0.0001;
  const optimizer = tf.train.sgd(learningRate);
  model.add(tf.layers.dense({units: 1, inputShape: [1]}));
  model.compile({
   loss: 'meanSquaredError',
   optimizer: optimizer,
  });

  var values=[];
  var i =1;
  for(i=1;i<=20;i++){
    if(typeof records[i] === 'number'){
        values.push(records[i]);
    }else{
      alert("data is not an integer");
}
  }

  const xs = tf.tensor2d(Object.keys(values), [values.length, 1]);

  const ys = tf.tensor2d(values, [values.length, 1]);

  await model.fit(xs, ys, {epochs: 500});

  for(var j=1;j<=values.length;j++){
    $("#output_field").append(j+"::"+model.predict(tf.tensor2d([j], [1, 1]))+"<br/>");
  }

 }