Таблицы Google Scripts.Электронные таблицы.Значения.get больше не работают в скрипте Google Apps. Чего мне не хватает?

#google-apps-script #google-sheets #google-docs

#google-apps-script #google-sheets #google-docs

Вопрос:

Google Scripts имеет совершенно новый вид с тех пор, как я создал этот скрипт, и, по-видимому, мне пора обновить мои неуклюжие листы до Doc merge. Когда я запускаю функцию createDocument(), я получаю сообщение «ReferenceError: Sheets не определен».

Кто-нибудь может помочь мне разобраться в том, чего не хватает (кроме фактических листов и идентификаторов документов)?

 function createDocument() {
  var fname = Sheets.Spreadsheets.Values.get('google sheet template id', 'A2:A'); //column A
  var lname = Sheets.Spreadsheets.Values.get('google sheet template id', 'B2:B'); //column B
  var gradeh = Sheets.Spreadsheets.Values.get('google sheet template id', 'H2:H'); //column H

  var templateId = 'google doc template id';
  
  for(var i = 0; i < fname.values.length; i  ){
    
    var firstname = fname.values[i][0];
    var lastname = lname.values[i][0];
    var gradeH = gradeh.values[i][0];
    
 //Make a copy of the template file
    var documentId = DriveApp.getFileById(templateId).makeCopy().getId();
    
 //Rename the copied file
    DriveApp.getFileById(documentId).setName('Year '   firstname   ' '   lastname   ' Report');
    
 //Get the document body as a variable
    var body = DocumentApp.openById(documentId).getBody();
    
 //replace template text with spreadsheet data
    
    body.replaceText('##gradeh##', gradeH)
    body.replaceText('##first##', firstname)
    body.replaceText('##last##', lastname)
   
  }

}
 

Комментарии:

1. Вы включили таблицы в расширенных службах Google?

2. Я сделал, но не получил никаких изменений. Я создал новый скрипт из Sheets и переписал код, и этот скрипт работает. Спасибо.

Ответ №1:

На случай, если у кого-то есть старое слияние, которое необходимо обновить:

     function myFunction() {
  
  var templateId = "doc template id";
  var mergesheetId = "google sheet template id";
  var finalId = "doc finished id"
  
  var docTemp = DocumentApp.openById(templateId);
  var docFinal = DocumentApp.openById(finalId);
  var ws = SpreadsheetApp.openById(mergesheetId).getSheetByName("data");
  
  var data = ws.getRange(2, 1,ws.getLastRow()-1,12).getValues();
  
  var templateParagraphs = docTemp.getBody().getParagraphs();
  
  docFinal.getBody().clear();
  
  data.forEach(function(r){
    createMailMerge(r[8],r[9],r[10],r[11],r[0],r[1],r[7],templateParagraphs,docFinal)
  
  });
    

}

function createMailMerge(comment1,comment2,comment3,comment4,first,last,grade,templateParagraphs,docFinal){
  
  templateParagraphs.forEach(function(p){
    docFinal.getBody().appendParagraph(
      p
      .copy()
      .replaceText("{comment1}", comment1)
      .replaceText("{comment2}", comment2)
      .replaceText("{comment3}", comment3)
      .replaceText("{comment4}", comment4)
      .replaceText("{first}", first)
      .replaceText("{last}", last)
      .replaceText("{grade}", grade)
      
    );
  });
  
  docFinal.getBody().appendPageBreak();
}