这是一个包含2张纸的样张电子表格(Sheet1和Sheet2)。单元格的值为1)[Sheet1的[[“ This”,“ is”,“ first”,“ sheet”],[“ Added row 2”,“”,“”,“”]]] 2)[[“ This Sheet2的“,”是“,”第二“,”工作表“],[”添加的第二行“,”“,”“,”“]]
当我运行以下代码时,
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 =“ This,is,first,sheet \ n已添加第2行,”
如何获得第二张纸的值?
var revision = revisions.items[revisions.items.length-1]
。如果我的理解是正确的,那么这个答案呢?
不幸的是,无法从revUrl
脚本中检索所有工作表的CSV数据。默认端点exportLinks["text/csv"]
指示电子表格的第一个标签。如果要检索其他工作表,则需要gid={sheetId}
为每个工作表添加查询参数。
并且在当前阶段,无法使用Spreadsheet Service和Sheets API直接访问ceatain版本的Spreadsheet。因此,当从修订数据中检索CSV数据时,如果已经删除了现有工作表和/或添加了新工作表,则无法检索所有工作表ID。
此解决方法假定条件是删除并添加了电子表格中的工作表。
在此修改中,我使用了以下流程。
通过以上流程,可以检索来自具有特定修订版的所有工作表的CSV数据。
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);
此替代方法假定不删除和不添加电子表格中的工作表的条件。
在此修改中,我使用了以下流程。
通过以上流程,可以检索来自具有特定修订版的所有工作表的CSV数据。
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())
}
}
如果我误解了您的问题,而这不是您想要的结果,我深表歉意。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句