不是 Google Apps 脚本中的函数错误

is not a function error in Google Apps Script

我在使用以下 google 应用程序脚本时仍然遇到问题。现在它出现在 ranger.activate() 行上。当 运行 我的日志中出现以下错误:

[20-06-20 08:16:26:262 PDT] 类型错误:ranger.activate 不是函数 在 createDocFromRow(代码:14:8)

这段代码试图做的是在 Google Sheet 中选取一个选定的行并将其转换为数据对象(这发生的步骤比需要的多,但我细粒度地分解它以尝试找到问题。一旦找到我可以合并步骤并减少 VAR 调用)。

创建数据对象后,我解析出我需要的数据并将其放入 Google 文档模板中。

任何帮助确定此“不是函数”错误的根本原因的方法都将大大改善我的心理健康。

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");
}

应该是

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

您缺少 () getActiveRange

说明

getActiveRange is a Function which returns an instance of RangeClass。并且需要使用括号 ()

来调用一个函数