Заглавката не се изчиства в скрипта на Google Apps

Работя върху създаването на шаблон на документ, който извежда името на документа в заглавката. По някаква причина извежда името на документа два пъти. Проблемът, който имам е странен и ще направя всичко възможно да го опиша. Когато стартирам кода си на празен документ, той работи добре, но когато го стартирам отново на същия документ, за да го актуализирам, името се появява два пъти, както на снимката, същото се случва за всяко друго време след това, дори когато започва с две имена на страницата. Това се случва само когато отворя/опреснявам документа, но не и когато стартирам функцията onOpen в редактора на скриптове.

function onOpen(){
    var doc = DocumentApp.getActiveDocument();
    var name = doc.getName();
    var header= doc.getHeader() || doc.addHeader();
    var footer = doc.getFooter() || doc.addFooter();
  
    //Clear Header
    try {
       header.clear();         
      } catch (e) {
       // case last element in header is partial and can't be cleared
       header.appendParagraph(" ");
       header.clear();
      }
    //Clear Footer
    try { 
      footer.clear();  
      } catch (e) {
       // case last element in footer is partial and can't be cleared
       footer.appendParagraph(" ");
       footer.clear();
      }
  
  
    //create style for header
    var headStyle = {};
    headStyle[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.LEFT;
    headStyle[DocumentApp.Attribute.FONT_FAMILY] = 'Georga';
    headStyle[DocumentApp.Attribute.FONT_SIZE] = 14;
    headStyle[DocumentApp.Attribute.VERTICAL_ALIGNMENT] = DocumentApp.VerticalAlignment.CENTER;
    //output header
    var headerPar = header.appendParagraph(name + " ");
    //set style to header
    headerPar.setAttributes(headStyle);
}

Ето снимка на резултата

Благодаря за помощта!


person Terence Hirsch    schedule 23.06.2020    source източник
comment
Вашият код работи за мен. Опитайте ръчно да изчистите заглавката си и след това да я презаредите няколко пъти?   -  person J. G.    schedule 23.06.2020
comment
Въпреки че не съм сигурен дали това е пряката причина за вашия проблем, реших, че във вашата ситуация се притеснявам, че може да инсталирате функцията на onOpen като инсталируем тригер за събитие. Ако е така, функцията onOpen се изпълнява 2 пъти от простия тригер и инсталируемия тригер. Така че възниква такъв проблем. Можете ли да потвърдите за това? Ако сте инсталирали функцията на onOpen като инсталируем тригер, моля, премахнете тригера. По този начин onOpen се изпълнява еднократно като прост тригер.   -  person Tanaike    schedule 24.06.2020


Отговори (1)


Хммм – току-що пуснах вашия код и той работи чудесно, върна само 1 заглавка.

Преди да го стартирам, мислех, че проблемът ще бъде, че извиквате .appendParagraph() два пъти - при дефиниция, а също и при setAttributes().

Можете да опитате една от тези две редакции:

//output header & set style to header
    var headerPar = header.appendParagraph(name + " ").setAttributes(headStyle);

or

//output header
  var headerPar = header.appendParagraph(name + " ");
//set style to header
  header.setAttributes(headStyle);

person Jeremy Irons    schedule 23.06.2020
comment
Проблемът, който имам е странен и ще направя всичко възможно да го опиша. Когато стартирам кода си на празен документ, той работи добре, но когато го стартирам отново на същия документ, за да го актуализирам, името се появява два пъти, както на снимката, същото се случва за всяко друго време след това, дори когато започва с две имена на страницата. Опитах и ​​двете ви предложения и нито едно от тях не реши проблема за съжаление. Надяваме се, че тази допълнителна информация ще помогне! - person Terence Hirsch; 25.06.2020
comment
Освен това се случва само когато отворя отново или обновя документа, но не и когато натисна функцията за изпълнение за onOpen(). - person Terence Hirsch; 25.06.2020
comment
Успях да възпроизведа проблема ви веднъж със съществуващия ви код. Не успях да възпроизведа с моята редакция (втората). Моля, опитайте да направите копие на този документ и вижте дали можете да възпроизведете грешката: docs.google .com/document/d/ - person Jeremy Irons; 25.06.2020
comment
Така че направих копие на вашия документ и нямаше дублиране. След това копирах вашия код в моя документ и пак се случи. Така че направих изцяло нов документ и копирах кода в него и нямаше грешка. Наистина не знам какво го причинява, но предполагам, че е поправено. Благодаря за цялата ви помощ :) - person Terence Hirsch; 25.06.2020