не является ошибкой функции в скрипте Google Apps - PullRequest
0 голосов
/ 20 июня 2020

У меня все еще возникают проблемы со следующим скриптом приложения Google. Сейчас он появляется в строке ranger.activate (). При запуске в моем журнале появляется следующая ошибка:

[20-06-20 08: 16: 26: 262 PDT] TypeError: ranger.activate не является функцией в createDocFromRow (Код: 14 : 8)

Этот код пытается сделать, это взять выбранную строку в Google Sheet и превратить ее в объект данных (это происходит в большем количестве шагов, чем необходимо, но я нарушаю его детально, чтобы попытаться найти проблему. После обнаружения я могу объединить шаги и уменьшить количество вызовов VAR).

После создания объекта данных я анализирую нужные мне данные и помещаю их в Google Do c template.

Любая помощь в выявлении root причины этой ошибки «не является функцией» будет go долгим путем к улучшению моего психического здоровья.

function createDocFromRow(){
var templateid = "1UjKBk0SyNUlswiWxXm3oCpEg3-RsJCPhTwwnyjif58s"; // Label Copy Doc ID
var FOLDER_NAME = "Label Copy"; // folder name of where to put completed Docs
var FILENAME = "LabelCopy" // To save new files as
// get the data from a ROW selected by Spreadsheet user
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var ranger = sheet.getSelection().getActiveRange;
ranger.activate();
ss.toast(ranger);
var dataArray = ranger.getValues();
// dataArray is my object[][]
var songname = dataArray[0][2];
var songwriters = dataArray[0][3];
var publishers =  dataArray[0][4];
var artist = dataArray[0][6];
var useremail = dataArray[0][7];
// create a new Label Copy Document 
var docid = DocsList.getFileById(templateid).makeCopy().getId();
var doc = DocumentApp.openById(docid);
var body = doc.getActiveSection();
// replace text FROM dataArray into placeholder space
body.replaceText("##SONG NAME##", songname);
body.replaceText("##artist##", artist);
body.replaceText("##user email##", useremail);
body.replaceText("##Timestamp##", Utilities.formatDate(row[1], "GMT", "HH:mm dd/MM/yyyy"));
body.replaceText("##Songwriters##", songwriters);
body.replaceText("##Publishers##", publishers);
//Prepare to close and rename file.
var folder = DocsList.getFolder(FOLDER_NAME);
file.addToFolder(folder);
doc.setName(LABELCOPY+artists)
doc.saveAndClose();
// message Sheets user
ss.toast("Label Copy Document Created");
}

1 Ответ

3 голосов
/ 20 июня 2020

Должно быть

var ranger = sheet.getSelection().getActiveRange();
ranger.activate();

Отсутствует () для getActiveRange

Пояснение

getActiveRange - это функция , которая возвращает экземпляр Range Class. А функцию нужно вызывать, используя круглые скобки ()

...