无法找到方法open()
。
那我该如何打开文件呢? openByID()
?真?我在哪里可以获得这个神奇的ID?来自getURL?真的吗?这是唯一出现的事情:
SpreadsheetApp.openById(id).getUrl()
但我无法理解如果我没有ID来挂起它我应该如何获取URL ...导致捕获22.此外,我假设在事件中我得到了URL我仍然需要解析它来获取ID ...他们为那个特定的咒语提供了什么神奇的方法?
显然,我的理解是缺乏的。有什么帮助吗?
function copyTemplate() {
var targetSpreadsheetName="The file";
var targetSpreadsheetID=SpreadsheetApp.open(targetSpreadsheetName).getId();
targetSpreadsheetID.insertSheet("CellData", 1, {template:temp});
// The code below will duplicate the sheet named "CellData" and insert it after
// the 1st sheet and call it "CellData"
var ss = SpreadsheetApp.getActiveSpreadsheet();
var temp = ss.getSheetByName("CellData");
ss.insertSheet("CellData", 1, {template:temp});
}
问题是多部分的。
返回的错误消息是“找不到方法打开()。”
第一个问题是“为什么它找不到方法open()?”。
第二个问题是“如果实际上它找不到它,为什么我在输入点时会让它选择它?”
第三个问题是“考虑到open()方法无法工作的事实,我该如何打开文件呢?”我期望从社区收到的假定答案是“使用openByID()”。
这导致了第四个问题,即“我从哪里获得身份证?”。明显的答案似乎是“getURL()”。
这导致第五个问题是“我如何使用getURL()?” getURL似乎需要一个ID。如果getURL需要ID来获取URL,并且openByID需要URL来获取ID,那么您将拥有无限循环。当然,我误解了一些事情。
第六个问题是“如果事件getURL()最终成为解决方案的一部分,那么如何区分ID与返回的其余字符串?”
我希望澄清我的问题。
答案 0 :(得分:4)
好吧,我终于会尝试回答你的问题,希望你会发现它足够清楚......; - )
第一件事:
var ss = SpreadsheetApp.open()
确实出现在点后的自动完成中,你没注意的是参数是一个文件,即一个由适当的语句返回的对象。 现在让我们看看如何获取它,并通过这个例子如何获得该文件的其他参数:
function myFunction() {
var files = DocsList.find('thisisthesheetIwant');// this is an array of file objects that include the term 'thisisthesheetIwant'
var file = files[0];// I take the first one
var filename = file.getName();//and get its name
var fileId = file.getId();// its ID
var fileurl = file.getUrl();//and its url
// then I show the results in the logger
Logger.log('number of file found = '+files.length+'\n\n'+filename+'\n\n'+fileId+'\n\n'+fileurl+'\n\n')
var ss = SpreadsheetApp.open(file);// using that file object I can open a spreadsheet
var content = ss.getSheets()[0].getDataRange().getValues().toString();// and get the whole content of the first sheet
Logger.log('content = '+content);// there it is
}
电子表格及其代码为is available here,因此您可以自行测试,我将其命名为thisisthesheetIwant
,希望您没有任何类似名称或内容的文件,因为它不能用作我预计如果返回的文件超过1个。
查看记录器,我希望它能回答你的问题。 它应该如下所示:
表单本身就是这样的:
编辑:请注意,ID和网址都有一个公共部分,您可以在浏览器的地址栏中看到该网址,ID只是其中的一部分。 现在,您可以使用
打开相同的电子表格SpreadsheetApp.openById(fileId)