您能否根据其密钥和工作表ID(gid)生成一个如何下载Google Docs电子表格的Python示例?我不能.
我已经搜索了API的第1版,第2版和第3版.我没有运气,我无法弄清楚他们编译的类似ATOM的API,gdata.docs.service.DocsService._DownloadFile私有方法说我是未经授权的,而且我不想自己写一个完整的Google登录认证系统.由于沮丧,我准备将自己捅到脸上.
我有一些电子表格,我想这样访问它们:
username = 'mygooglelogin@gmail.com'
password = getpass.getpass()
def get_spreadsheet(key, gid=0):
... (help!) ...
for row in get_spreadsheet('5a3c7f7dcee4b4f'):
cell1, cell2, cell3 = row
...
Run Code Online (Sandbox Code Playgroud)
请保存我的脸.
更新1:我尝试了以下,但没有组合Download()或Export()似乎工作.(DocsService 这里的文件)
import gdata.docs.service
import getpass
import os
import tempfile
import csv
def get_csv(file_path):
return csv.reader(file(file_path).readlines())
def get_spreadsheet(key, gid=0):
gd_client = gdata.docs.service.DocsService()
gd_client.email = 'xxxxxxxxx@gmail.com'
gd_client.password = getpass.getpass()
gd_client.ssl = False
gd_client.source = "My Fancy Spreadsheet Downloader"
gd_client.ProgrammaticLogin()
file_path = tempfile.mktemp(suffix='.csv')
uri …Run Code Online (Sandbox Code Playgroud) 我的脚本从Google云端硬盘中的模板生成pdf文档,并根据电子表格中的列通过电子邮件将其通过电子邮件发送给收件人,因为DocsList已弃用.请参阅此处:https://developers.google.com/google-apps/documents-list/
我尝试按照本指南https://developers.google.com/drive/web/migration更新,以使用DriveApp更新DocsList的所有实例,但我无法让它工作.有人可以帮我更新这个脚本以正常工作吗?我在这个脚本中有6个"DocsList"实例,我能够正确更新其中一些实例,但其他诸如"addFile"似乎需要不同的格式.即使在尝试简单地找到并用"DriveApp"替换"DocsList"之后,我也会收到以下错误消息:
"TypeError:无法在对象ProofOfCredit_CNZDTVR44N.pdf中找到函数addFile.(第45行,文件"ProofOfCreditCode")"
我很感激任何建议和帮助,因为这个折旧打破了我的5个脚本,这些脚本与这个脚本几乎完全相同.
var docTemplate = "1JAPmsrPRrRwXCVAli229C5J7Kr4xaOnfO2rmGqvYyhU";
var docName = "ProofOfCredit";
function onFormSubmit(e) {
var first_name = e.values[1];
var last_name = e.values[2];
var customer_email = e.values[3];
var order_number = e.values[4];
var brand = e.values[5];
var amount = e.values[6];
var date_of_credit = e.values[7];
var auth_code = e.values[8];
var last_4 = e.values[9];
var request_id = e.values[10];
var rep_name = e.values[11];
var copyId = DocsList.getFileById(docTemplate)
.makeCopy(docName+'_'+order_number)
.getId();
var copyDoc = DocumentApp.openById(copyId);
var copyBody = copyDoc.getActiveSection();
copyBody.replaceText('keyFirst', first_name); …Run Code Online (Sandbox Code Playgroud) 任务是自动执行通过菜单选项“文件|下载为|纯文本”完成的手动过程
我希望能够控制保存的文件名,这是无法通过菜单完成的。
调用此函数时,用户将坐在电子表格中的工作表上。最终,我将其作为菜单选项,但为了测试,我只是创建一个可以手动运行的函数。
在阅读了其他几个可能的技术主题后,这就是我想到的。
它为文件构建自定义名称,进行调用,响应代码为 200。
理想情况下,我想避免打开/保存对话框。换句话说,只需保存文件即可,无需额外的用户干预。我想保存在特定的文件夹中,并且我已经使用完整的文件规范进行了尝试,但结果是相同的。
如果我复制记录器中显示的 URL 并将其粘贴到浏览器中,它将启动打开/保存对话框,以便该字符串起作用。
这是作为函数的代码。
function testExportSheet() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var oSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var sId = ss.getId();
var ssID=sId + "&gid=" + oSheet.getSheetId();
var url = "https://spreadsheets.google.com/feeds/download/spreadsheets/Export?key="
+ ssID + "&exportFormat=tsv";
Logger.log(url);
var fn = ss.getName() + "-" + oSheet.getSheetName() + ".csv";
var sHeaders = {"Content-Disposition" : "attachment; filename=\"" + fn + "\""};
var sOptions = {"contentType" : "text/html", "headers" : sHeaders};
Logger.log(sOptions);
x = UrlFetchApp.fetch(url, sOptions)
Logger.log(x.getResponseCode());
}
Run Code Online (Sandbox Code Playgroud)