微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当其他用户运行 Apps 脚本时,使用 DriveApp 读取共享文件夹时出现问题

如何解决当其他用户运行 Apps 脚本时,使用 DriveApp 读取共享文件夹时出现问题

我有一个 Google 表格,它使用 App 脚本从共享文件夹中保存的外部电子表格中读取数据。该文件夹中有多个文件(都命名为相同的内容)。我有一个特定的函数,它读取给定文件夹中的所有文件并返回最新文件的 id(然后我用它从脚本中的其他位置加载该文件中的数据)。

该脚本是使用我的公司帐户创建的,并且在我自己执行时完美运行。但是,当其他用户尝试运行相同的脚本时,他们会收到以下错误消息:

    TypeError: Cannot read property '1' of undefined
    at get_latest_file_id(Code:380:21)
    at get_timesheet_data(Code:19:12)
    at unitTest(Code:78:3)

错误显然与 result[0][1] 未定义这一事实有关,但我不确定为什么。我怀疑这与权限和我对 DriveApp 的使用有关。我已经测试了以下内容

  • 我已尝试使用我的个人 Gmail 帐户运行脚本并读取存储在我公司帐户中存储的文件夹中共享的文件,这工作正常。
  • 我尝试将共享文件移动到我的个人帐户并从我的公司帐户运行脚本,这也很好用。

但是,如果我使用我的一个同事帐户,无论文件是存储在我的公司帐户(属于同一组织的一部分)还是我的个人帐户中,它都不起作用。当用户运行脚本时,我得到通常的“此开发人员未经验证”,您必须选择在第一次运行脚本时授予访问权限,但除此之外,我没有收到任何似乎指向的错误消息获得许可,所以我不确定如何调试/继续。

我很感激你能给我的任何方向和可能的解决方法的建议。

//RETREIVES THE FILE ID OF THE MOST RECENTLY CREATED FILE WITH A SPECIFIC NAME FROM A SPECIFIC FOLDER.
function get_latest_file_id(foldername,filename) {
  
  var folder = DriveApp.getFolderById('XXXXXXXXXXXXXXXX');  
  var files = DriveApp.getFilesByName(filename);
  var result = [];
  while (files.hasNext()) {
    var file = files.next();
    result.push([file.getDateCreated(),file.getId()]);
 } 
    
  
  result.sort(function(a,b){
  // Turn your strings into dates,and then subtract them
  // to get a value that is either negative,positive,or zero.
  return new Date(b.date) - new Date(a.date);
  });
  
  
  var id = result[0][1];
  
  
// Logger.log('Most recent ID:',id);

  

  return id;// return most recent file IDs

}//ENDS

解决方法

试试这个

function get_latest_file_id(foldername,filename) {
  
  var folder = DriveApp.getFolderById('XXXXXXXXXXXXXXXX');  
  var files = DriveApp.getFilesByName(filename);
  var result = [];
  while (files.hasNext()) {
    var file = files.next();
    result.push([file.getDateCreated(),file.getId()]);
  } 
  result.sort(function(x,y){
  var xp = x[0];
  var yp = y[0];
  return xp == yp ? 0 : xp > yp ? 1 : -1;
  var id = result[0][1];
    });
}
,

添加此答案以获得更好的可见性,特别是对于将来可能会发现此问题的人。

错误 TypeError: Cannot read property '1' of undefined 表示 result[0]undefined。因为我们只使用 push 填充结果,这意味着数组是空的。

原因是用户看不到文件夹中的任何文件。确保用户可以访问文件夹和文件将解决问题。在这种情况下,OP 邀请用户进入文件夹,从而解决了问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。