我成功地将文本文件上传到谷歌云端硬盘,并且编写了一种方法,可以成功地将文本翻译为猪拉丁语。现在我尝试在 Google Drive 中创建一个新文档来输出翻译后的文本。但是,我总是收到消息:“发生错误”,当我检查我的云端硬盘时,我只有原始上传的文本。
这是我的代码:
function doGet(e) {
var app = UiApp.createApplication().setTitle("Upload");
var formContent = app.createVerticalPanel();
formContent.add(app.createFileUpload().setName('thefile'));
formContent.add(app.createSubmitButton('submit'));
var form = app.createFormPanel();
form.add(formContent);
app.add(form);
return app;
}
function doPost(e) {
// data returned is a blob for FileUpload widget
var fileBlob = e.parameter.thefile;
var doc = DocsList.createFile(fileBlob);
var app = UiApp.getActiveApplication();
//Display a confirmation message
var label = app.createLabel('file uploaded successfully');
app.add(label);
return app;
var text = doc.getDataAsString();
Logger.log('I uploaded and my text is: ' + text);
MakeTranslationDoc(text);
}
function MakeTranslationDoc(passedText)
{
// Create a new Report
var newdoc = DocumentApp.create('Pig Latin Translation');
newdoc.appendParagraph(ParseText(passedText));
// Save and close the document
newdoc.saveAndClose();
}
function ParseText(myText)
{
...convert text to piglatin...
return results;
}
我应该怎样做才能从上传的文本成功创建新文档?
有时间再研究一下:(虽然有点麻烦,但应该可以用
- 您需要使用 API 控制台设置一个项目,以便获取您的 CONSUMER_KEY 和 CONSUMER_SECRET ...正确设置回调的重定向 URI 和来源也很重要https://script.google.com/oauth2callback and https://script.google.com分别似乎对我有用:)
这是API控制台帮助页面您应该创建一个项目,该项目需要您使用谷歌凭据登录。如果这是您第一次登录 API,您将看到一个大按钮来创建您的第一个项目。然后,您应该获得 Web 应用程序客户端的凭据。单击 API 访问链接时会找到 CONSUMER_KEY 和 CONSUMER_SECRET,它们分别称为“客户端 ID”和“客户端密钥”。
创建项目后,控制台将打开,单击服务(右侧的链接),向下滚动并单击 Drive API 开关以启用它。
- 使用上传文件的 ID,您可以使用 urlFetch 下载其内容
您刚刚上传的文件作为 ID,您可以使用 docID = doc.getId() 获取它
基本上,第一次运行脚本时,它将通过授权流程,这将使您的应用程序能够访问您的驱动器资源,因为您可能会看到应用程序选择的范围是只读的“www.googleapis.com/auth/ drive.readonly”您可以了解有关 Drive API 的更多信息HERE
- 我已经在电子表格中完成了此操作以查看记录器语句,当然您可以将其移植到非电子表格绑定脚本。
在电子表格中进行开发提供了更好的调试功能,之后我们可以将代码移植到独立脚本中。不同之处在于,要显示 UI,您需要调用活动电子表格并在其上调用 .show(app) ...有关此信息的信息如下:https://developers.google.com/apps-script/uiapp#DisplayingSpreadsheet
Code:
function getFileContent(docId) {
//set up oauth for Google Drive Settings
var oAuthConfig1 = UrlFetchApp.addOAuthService("googleDrive2");
oAuthConfig1.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken?scope=https://www.googleapis.com/auth/drive.readonly");
oAuthConfig1.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken");
oAuthConfig1.setAuthorizationUrl("https://www.google.com/accounts/OAuthAuthorizeToken?oauth_callback=https://script.google.com/a/macros");
oAuthConfig1.setConsumerKey(CONSUMER_KEY);
oAuthConfig1.setConsumerSecret(CONSUMER_SECRET);
var options1 = {oAuthServiceName:"googleDrive2", oAuthUseToken:"always", method:"GET", headers:{"GData-Version":"3.0"}, contentType:"application/x-www-form-urlencoded"};
//set up drive file url
var theUrl = "https://www.googleapis.com/drive/v2/files/" + docId;
//urlFetch for drive metadat info
var fileMetadata = "";
try {
var response = UrlFetchApp.fetch(theUrl,options1);
fileMetadata = response.getContentText();
} catch(problem) {
Logger.log(problem.message);
}
// find the download Url
var fileDownloadUrl = Utilities.jsonParse(fileMetadata).downloadUrl;
Logger.log(fileDownloadUrl)
var fileContent = "";
try {
var response = UrlFetchApp.fetch(fileDownloadUrl,options1);
fileContent = response.getContentText();
} catch(problem) {
Logger.log(problem.message);
}
Logger.log(fileContent);
}
让我知道这是如何运作的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)