Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 检索Google电子表格中特定修订版的所有图纸的值_Google Apps Script - Fatal编程技术网

Google apps script 检索Google电子表格中特定修订版的所有图纸的值

Google apps script 检索Google电子表格中特定修订版的所有图纸的值,google-apps-script,Google Apps Script,这是一个包含两张表(表1和表2)的电子表格。单元格值为 1) [[“这”、“是”、“第一”、“工作表”]、[“添加了第2行”、“”、“”、“”、“”]]用于工作表1 2) [[“这”、“是”、“第二”、“工作表”]、[“添加了第2行”、“”、“”、“”、“”]]用于工作表2 当我运行以下代码时 var file_id = '1JqbuqOQS5NSFqfPlxJG-DY1HIW9xZl_ddjQa_F2pUv4'; var revisions = Drive.Revisions.list(fil

这是一个包含两张表(表1和表2)的电子表格。单元格值为 1) [[“这”、“是”、“第一”、“工作表”]、[“添加了第2行”、“”、“”、“”、“”]]用于工作表1 2) [[“这”、“是”、“第二”、“工作表”]、[“添加了第2行”、“”、“”、“”、“”]]用于工作表2

当我运行以下代码时

var file_id = '1JqbuqOQS5NSFqfPlxJG-DY1HIW9xZl_ddjQa_F2pUv4';
var revisions = Drive.Revisions.list(file_id);
var revision = revisions.items[revisions.items.length-1];

var revUrl = Drive.Revisions.get(file_id, revision.id).exportLinks["text/csv"]  + "&access_token=" + ScriptApp.getOAuthToken();

var revString = UrlFetchApp.fetch(revUrl).getContentText();
我只得到revString=“这是,首先,表\n添加了第2行,,,”

如何获取第二张图纸的值?

  • 您希望检索最新版本。
    • 这来自
      var revision=revisions.items[revisions.items.length-1]
    • 您还希望从其他修订中检索CSV数据
  • 您希望从所有图纸中检索特定修订版的CSV数据
  • 你想使用谷歌应用程序脚本
如果我的理解是正确的,那么这个答案呢

问题: 不幸的是,无法从脚本的
revUrl
检索所有工作表中的CSV数据。
exportLinks[“text/csv”]
的默认端点表示电子表格的第一个标记。如果要检索其他工作表,需要为每个工作表添加查询参数
gid={sheetId}

在当前阶段,无法使用电子表格服务和工作表API直接访问ceatain修订版的电子表格。因此,从修订数据检索CSV数据时,如果已删除现有图纸和/或已添加新图纸,则无法检索所有图纸ID

解决方法1: 此解决方案假定电子表格中的图纸被删除和添加

在这次修改中,我使用了以下流程

  • 从某个版本的电子表格中检索XLSX数据
  • 将XLSX数据转换为Google电子表格作为临时电子表格
  • 从转换后的电子表格中检索所有值作为CSV数据
  • 删除临时电子表格
  • 通过上述流程,可以检索具有特定修订的所有工作表中的CSV数据

    修改脚本:
    var文件_id='1JqbuqOQS5NSFqfPlxJG-DY1HIW9xZl_ddjQa_F2pUv4';
    var revisions=Drive.revisions.list(文件id);
    var修订=修订。项目[修订。项目。长度-1];
    //我修改了下面的脚本。
    var revUrl=Drive.Revisions.get(file_id,revision.id).exportLinks[“application/vnd.openxmlformats officedocument.spreadsheetml.sheet”]+”&access_-token=“+ScriptApp.getOAuthToken();
    var blob=UrlFetchApp.fetch(revUrl.getBlob();
    var tempSSId=Drive.Files.insert({mimeType:mimeType.GOOGLE_SHEETS},blob).id;
    var sheets=SpreadsheetApp.openById(tempSSId.getSheets();
    对于(变量i=0;i
    解决方法2: 此解决方案假定电子表格中的图纸不被删除也不被添加

    在这次修改中,我使用了以下流程

  • 从当前电子表格中检索所有图纸ID
  • 使用检索到的图纸ID创建请求
  • 从每张图纸检索CSV数据
  • 通过上述流程,可以检索具有特定修订的所有工作表中的CSV数据

    修改脚本:
    var文件_id='1JqbuqOQS5NSFqfPlxJG-DY1HIW9xZl_ddjQa_F2pUv4';
    var sheetIds=SpreadsheetApp.openById(file_id).getSheets().map(函数(e){returne e.getSheetId()});
    var token=ScriptApp.getOAuthToken();
    var revisions=Drive.revisions.list(文件id);
    var修订=修订。项目[修订。项目。长度-1];
    var reqs=sheetIds.map(功能(e){
    var revUrl=Drive.Revisions.get(file_id,revision.id).exportLinks[“text/csv”]+”&access_-token=“+token+”&gid=“+e;
    返回{url:revUrl,muteHttpExceptions:true};
    });
    var res=UrlFetchApp.fetchAll(要求);
    对于(变量i=0;i
    注:
    • 这个答案假设驱动API是在高级Google服务中启用的
    参考资料:
    如果我误解了你的问题,而这不是你想要的结果,我道歉。

    • 您希望检索最新版本。
      • 这来自
        var revision=revisions.items[revisions.items.length-1]
      • 您还希望从其他修订中检索CSV数据
    • 您希望从所有图纸中检索特定修订版的CSV数据
    • 你想使用谷歌应用程序脚本
    如果我的理解是正确的,那么这个答案呢

    问题: 不幸的是,无法从脚本的
    revUrl
    检索所有工作表中的CSV数据。
    exportLinks[“text/csv”]
    的默认端点表示电子表格的第一个标记。如果要检索其他工作表,需要为每个工作表添加查询参数
    gid={sheetId}

    在当前阶段,无法使用电子表格服务和工作表API直接访问ceatain修订版的电子表格。因此,从修订数据检索CSV数据时,如果已删除现有图纸和/或已添加新图纸,则无法检索所有图纸ID

    解决方法1: 此解决方案假定电子表格中的图纸被删除和添加

    在这次修改中,我使用了以下流程

  • 从某个版本的电子表格中检索XLSX数据
  • 将XLSX数据转换为Google电子表格作为临时电子表格
  • 从转换后的电子表格中检索所有值作为CSV数据
  • 删除临时电子表格
  • 通过上述流程,可以检索具有特定修订的所有工作表中的CSV数据

    修改脚本:
    var文件_id='1JqbuqOQS5NSFqfPlxJG-DY1HIW9xZl_ddjQa_F2pUv4';
    var修订版=驱动器修订版列表(fil
    
    var file_id = '1JqbuqOQS5NSFqfPlxJG-DY1HIW9xZl_ddjQa_F2pUv4';
    var revisions = Drive.Revisions.list(file_id);
    var revision = revisions.items[revisions.items.length-1];
    
    // I modified following script.
    var revUrl = Drive.Revisions.get(file_id, revision.id).exportLinks["application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"]  + "&access_token=" + ScriptApp.getOAuthToken();
    var blob = UrlFetchApp.fetch(revUrl).getBlob();
    var tempSSId = Drive.Files.insert({mimeType: MimeType.GOOGLE_SHEETS}, blob).id;
    var sheets = SpreadsheetApp.openById(tempSSId).getSheets();
    for (var i = 0; i < sheets.length; i++) {
      var csv = sheets[i].getDataRange().getValues().map(function(e) {return e.join(",")}).join("\n");
      Logger.log(csv)
    }
    Drive.Files.remove(tempSSId);
    
    var file_id = '1JqbuqOQS5NSFqfPlxJG-DY1HIW9xZl_ddjQa_F2pUv4';
    var sheetIds = SpreadsheetApp.openById(file_id).getSheets().map(function(e) {return e.getSheetId()});
    var token =  ScriptApp.getOAuthToken();
    var revisions = Drive.Revisions.list(file_id);
    var revision = revisions.items[revisions.items.length-1];
    var reqs = sheetIds.map(function(e) {
      var revUrl = Drive.Revisions.get(file_id, revision.id).exportLinks["text/csv"]  + "&access_token=" + token + "&gid=" + e;
      return {url: revUrl, muteHttpExceptions: true};
    });
    var res = UrlFetchApp.fetchAll(reqs);
    for (var i = 0; i < res.length; i++) {
      if (res[i].getResponseCode() == 200 ) {
        Logger.log(res[i].getContentText())
      }
    }