Google表格API:如何为可嵌入工作表“发布到网络”?

时间:2016-07-22 19:24:03

标签: google-api google-sheets google-api-client google-sheets-api

如果我想发布Google表格电子表格,以便将其嵌入到iframe中的页面上,我会手动执行以下操作:

  1. 导航至Google云端硬盘
  2. 打开电子表格
  3. 文件>发布到网络>嵌入>将生成的iframe链接复制到html文件
  4. 如何使用前端的JavaScript通过Google表格API以编程方式实现上述目标?我正在我的应用程序中动态生成电子表格,并希望在创建后立即将它们嵌入到页面中。

    创建工作表后,我可以动态创建具有必要属性的iframe元素(工作表ID等)。这引发了一个错误。从这个question开始,工作表看起来需要{{1}}属性,但这需要使用Drive API - 我试图避免这种情况。这可以通过Sheets API处理 吗?

2 个答案:

答案 0 :(得分:9)

在搜索整个Sheets API,谷歌搜索,以及一般的反省之后,我别无选择,只能包含Drive API并使用它来进行我的出价。这是我提出的解决方案。希望这可以帮助其他人!

将来自Google的此脚本用于index.html文件中的客户端JS库:

<body>
  ...
  <script type="text/javascript" src="https://apis.google.com/js/client.js"></script>
</body>

然后是JS的东西:

// Cache the api's into variables.
var sheets = gapi.client.sheets;
var drive = gapi.client.drive;

// 1. CREATE NEW SPREADSHEET
sheets.spreadsheets.create({
  properties: {
    title: 'new-sheet'
  }
}).then(function(newSpreadSheet) {
  var id = newSpreadSheet.result.spreadsheetId;

  // 2. PUBLISH SPREADSHEAT VIA DRIVE API
  drive.revisions.update({
    fileId: id,
    revisionId: 1
  }, {
    published: true, // <-- This is where the magic happens!
    publishAuto: true
  }).then(function() {

    // 3. DISPLAY SPREADSHEET ON PAGE VIA IFRAME
    var iframe = [
      '<iframe ',
      'src="https://docs.google.com/spreadsheets/d/',
      id,
      '/pubhtml?widget=true&headers=false&embedded=true"></iframe>'
    ].join('');

    // We're using jQuery on the page, but you get the idea.
    $('#container').html($(iframe));
  });
});

答案 1 :(得分:2)

如您所知,目前无法通过Sheets API实现,并且只能通过Drive API(使用https://developers.google.com/drive/v3/reference/revisions/update中记录的PATCH https://www.googleapis.com/drive/v3/files/fileId/revisions/revisionId请求)。