获取URL中的电子表格密钥。不是ss.getId()

时间:2014-02-18 01:10:21

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

如何获取网址中的电子表格ID。 我知道使用SpreadsheetApp.getActiveSpreadsheet()。getId()和SpreadsheetApp.getActiveSpreadsheet()。getUrl()

但getId()/ getUrl()/ getKey()现在因Google-Drive-SDK而失败。我不再能够 使用此ID可以使用Drive-SDK打开文件。它大约在一周前工作,但Drive-SDK现在无法打开文件。

解决方法是使用URL中的ID。 key =

后面的id

https://docs.google.com/spreadsheet/ccc?key=0AkGlO9jJLGO8dHJrSE0wTEF2VXRSdGRlNVQaaVRad0E

但我想要一种自动获取方式,而不是 手动过程。由于使用模板创建电子表格,因此我无法知道ID。思考,有没有办法得到它?

注1:stackoverflow.com/questions/18583885/表示Google Drive SDK问题应该发布到stackoverflow

注2:getUrl()和getKey()包含与getId()相同的ID,而不是URL中的键。所以看起来已经删除了对密钥的访问,所以我没有抱太大的希望。

修改

驱动器代码是Java而不是google-apps-script。版本1.15.0-rc

    Drive driveService = new Drive.Builder(TRANSPORT, JSON_FACTORY, credential).setApplicationName("CellMaster.com.au").build();
    File file = driveService.files().get(this.spreadsheetKey).execute();

我认为它在上周左右的某个时候破了。它与execute()失败,产生404错误。当我使用google apps脚本生成的short spreadsheetKey时,它会出错。但是当我使用浏览器URL密钥值时它仍然可以正常工作。

2 个答案:

答案 0 :(得分:3)

您不会显示不适合您的代码,但以下对我来说没问题

function myFunction() {
// create a new spreadsheet workbook
var ss = SpreadsheetApp.create("Test");
var id = ss.getId();
Logger.log(id)
// get the ss file through Drive using spreadsheet id
var file = DriveApp.getFileById(id);
var driveid = file.getId();
Logger.log(driveid)
// open the spreadsheet using id of file
var ssfromdrive = SpreadsheetApp.openById(driveid);
Logger.log(ssfromdrive.getName())
 }

答案 1 :(得分:1)

正如David指出的那样,电子表格应用和云端硬盘应用中同一文件的ID不同。

使用电子表格ID从云端硬盘驱动器应用中获取电子表格文件,然后根据示例获取云端硬盘文件的ID,这将解决您的问题。