2013-04-08 66 views
1

我想为谷歌电子表格编写一个自定义函数,但我左右运行权限错误。为了让事情开始,我将它输入到左上角的单元格中:"=testFunction()"。在功能方面,我想强调,选择基于用户一排,和整个以下问题上来:谷歌电子表格自定义功能权限

  1. 我没有权限调用Session.getActiveUser()方法,所以我不能做任何事情基于用户访问文档。此外,getUrl函数不会返回实际的url,所以在末尾加上“#Jeff”这样的字符将不起作用。注意:我最终解决了这个问题,因为让我惊讶的是,Spreadsheet.getViewers函数起作用。
  2. 我没有权限运行Spreadsheet.setActiveSelection()函数,所以我无法选择一行。
  3. 如果我从单元格A运行函数,我没有权限更改单元格B的背景。这意味着我需要将我的破折高亮函数放在每个想要更改颜色的单元格中。

查找如何做某件事,测试它,并观察权限错误弹出四次中的三次,这令人沮丧。考虑到我是该文档的所有者,是否有任何方法可以更改我有权执行的操作?如果没有,是否有任何文件可以运行我可以运行的功能?

+0

相关:http://stackoverflow.com/questions/40009418/how-do-i-get-permission-to-delete-rows-in-google-sheets – 2016-10-13 03:31:59

回答

1

自定义功能都不允许访问用户特定的服务

0

我已经注意到从一个细胞不能做的auth-所需的方法的自定义功能,但你可以得到你的脚本,如果你运行让脚本被触发。

示例:我编写了与我的工作表关联的脚本函数。

function getTheUser() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheets()[0]; 
    sheet.getRange('a1').setValue(Session.getActiveUser()); 
} 

,如果我把这个细胞

=getTheUser() 

细胞被标有“错误:您没有权限拨打getActiveUser(第9行,文件‘准则’)”

但是,如果我转到项目的脚本并为函数创建触发器,则只要触发条件满足,函数就会运行OK。

我的计划是使用触发器来获取auth所需的函数来运行。