考虑到Google表单app script的开发(FormApp
),在某些时候可能需要在电子表格中存储相关数据(例如,处理提交的回复)(一个特定于应用程序脚本,而不是作为表单目标的脚本。)
使用Google Spreadsheet应用程序这样做可能很有用(因为它提供了查询此类数据的功能)。
不幸的是,在SpreadsheetApp
中打开的脚本中对FormApp
的任何调用都会引发错误,并且有关此类跨应用程序使用是否可行的文档不清楚。
后备解决方案是使用Google Drive API访问电子表格对象,但特定的电子表格功能(管理结构化的数据行,查询......)似乎无法从那里获得。
那么有没有办法在FormApp
应用脚本中使用电子表格功能?
答案 0 :(得分:1)
你说:"在FormApp中打开的脚本中对SpreadsheetApp的任何调用都会引发错误"
这根本不是真的......
您实际上可以运行一个表单嵌入式脚本,该脚本使用外部电子表格中的数据而没有任何问题
您只需使用适当的方法打开电子表格即
SpreadsheetApp.openByUrl('SS url');
或SpreadsheetApp.openById('SS ID');
,然后您可以打开工作表(getSheetByName('name')
或getSheets()[number]
)并获取值,设置值或任何您想要的内容。
您的帖子结束时说"有没有办法在FormApp应用脚本中使用电子表格功能?" ,
我希望您没有考虑到使用电子表格功能,例如您在单元格中使用的本机电子表格功能...."因为无论您在哪里保存脚本,这些都无法在Google Apps脚本中使用。但我确定你没有意思,而且这只是一种语言歧义。
作为一个简单的例子,这是一个用Form脚本编写的小函数,它的结果作为日志。
function getSsData() {
var ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/1xDOaoSl3HbkS95cj8Jl-82rdiui7G0sFz96PIO6iVF4/edit#gid=0');
var sh = ss.getSheetByName('calNames');
Logger.log(sh.getDataRange().getValues());
}
该表格是可见的here,我没有共享该表单,因为我无法仅在视图中共享该表单,但任何表单都可用于测试上述脚本。