在Google Spreadsheets中返回Google云端硬盘文件夹的完整路径会返回权限错误

时间:2014-03-13 20:31:30

标签: google-apps-script google-sheets google-drive-api

我的电子表格中包含Google云端硬盘文件夹的网址

例如:https...drive.google.com/a/_our-domain_/#folders/_my-folder-id_

我希望将完整路径放到另一个小区,例如/my-1stlevelfolder/second/parent/my-folder

我已经创建了这个函数,它完全符合我的要求,但它仅适用于编辑器。当我在电子表格中使用该功能时,它会在单元格#ERROR和消息中显示我没有权限。我已经允许在源代码和开发人员控制台中使用谷歌驱动器(但它甚至没有在脚本编辑器中工作),当然我有权查看测试文件夹的内容(并且再次,它在脚本编辑器中工作)

  function getpath(url) {
    if (url == undefined) return;
    var names = [];
    var folder = DocsList.getFolderById(url.replace(/.*\//g,''));
    while (folder.getName() != "Root"){
      names.unshift(folder.getName());
      var parents = folder.getParents();
      var folder = parents[0];
    }
    var result = names.join().replace(/,/g,'/');
    return result
  }

我做错了什么?

2 个答案:

答案 0 :(得分:0)

很遗憾,当您从电子表格执行此功能时,您无法执行此操作,请参阅此处的文档:https://developers.google.com/apps-script/execution_custom_functions?hl=fr#permissions

答案 1 :(得分:0)

Harold是对的(当然是^^),自定义函数的功能非常有限...使用由可安装的onEdit触发器触发的嵌入式脚本构建变通方法非常容易,该触发器将自动填充所需的只要您的工作表以脚本可以理解的方式构建,就会显示包含网址相关数据的单元格。 如果您想要更准确的答案,则必须描述您的工作表布局。