#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();
}