前期研究
请不要关闭这个问题作为一个重复,因为我的问题是如何解决我收到的具体错误信息,而不是我的目标是否可以实现的一般问题-作为一些其他相关问题,由我的研究产生,下面详细说明,已经问过。
相关问题及为什么不适用于这里
- 这个问题,2012年7月27日问的,不适用,因为它:(1)太旧了(10个月后,可能存在新的解决方案/方法),(2)不处理我正在经历的特定错误信息。
- 这个问题是在2012年10月12日提出的,由于类似的原因不能适用。
- 我下面的代码是从这里复制的,从这里分叉。这些可能是有效的解决方案,因为它们已经从Stack Overflow上的其他问答交换中被引用。
程序上,我正在尝试:
- 搜索我的电子邮件收件箱
- 查找Excel (.xls)文件附件
- 上传。xls文件附件到Google Drive。
- 上传时,将。xls文件转换为Google Spreadsheet文件格式。
当我执行processInbox()(这个问题底部显示的代码)时,它失败了,我得到如下所示的错误消息。
错误消息Request failed for returned code 403.
Server response:
{
"error":{
"errors":[
{
"domain":"usageLimits",
"reason":"accessNotConfigured",
"message":"AccessNotConfigured"
}
],
"code":403,
"message":"AccessNotConfigured"
}
}
(line 13, file "DriveUpload")
<标题>
Request failed for returned code 403.
Server response:
{
"error":{
"errors":[
{
"domain":"usageLimits",
"reason":"accessNotConfigured",
"message":"AccessNotConfigured"
}
],
"code":403,
"message":"AccessNotConfigured"
}
}
(line 13, file "DriveUpload")
我做错了什么?我该怎么补救呢?
例如,我是否需要在我的API控制台中做一些特殊的事情来设置我的项目,比如访问Google Drive或其他东西?我错过了什么?
注意:我还没有在我的任何应用程序中成功实现oAuth。
第13行
(这是错误消息引用的代码行)
var uploadRequest = UrlFetchApp.fetch("https://www.googleapis.com/upload/drive/v2/files/?uploadType=media&convert=true&key="+key, params); // convert=true convert xls to google spreadsheet
我正在使用的完整代码体如下所示,供您参考。我提取了触发错误的"第13行",并将其突出显示在上面,以帮助我们关注问题的直接原因。
DriveUpload.js
function uploadXls(file) {
authorize();
var key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; // <-- developer key
var metadata = { title: file.getName() }
var params = {method:"post",
oAuthServiceName: "drive",
oAuthUseToken: "always",
contentType: "application/vnd.ms-excel",
contentLength: file.getBytes().length,
payload: file.getBytes()
};
// convert=true convert xls to google spreadsheet
var uploadRequest = UrlFetchApp.fetch("https://www.googleapis.com/upload/drive/v2/files/?uploadType=media&convert=true&key="+key, params);
var uploadResponse = Utilities.jsonParse(uploadRequest.getContentText());
var params = {method:"put",
oAuthServiceName: "drive",
oAuthUseToken: "always",
contentType: "application/json",
payload: Utilities.jsonStringify(metadata)
};
var metaRequest = UrlFetchApp.fetch("https://www.googleapis.com/drive/v2/files/"+uploadResponse.id+"?key="+key, params)
return DocsList.getFileById(uploadResponse.id);
}
function authorize() {
var oauthConfig = UrlFetchApp.addOAuthService("drive");
var scope = "https://www.googleapis.com/auth/drive";
oauthConfig.setConsumerKey("anonymous");
oauthConfig.setConsumerSecret("anonymous");
oauthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken?scope="+scope);
oauthConfig.setAuthorizationUrl("https://accounts.google.com/OAuthAuthorizeToken");
oauthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken");
}
function processInbox() {
// get all threads in inbox
var threads = GmailApp.getInboxThreads();
for (var i = 0; i < threads.length; i++) {
// get all messages in a given thread
var messages = threads[i].getMessages();
// iterate over each message
for (var j = 0; j < messages.length; j++) {
// log message subject
var subject = messages[j].getSubject()
//Logger.log(subject);
if ( subject == "with xls attach" ){
Logger.log(messages[j].getSubject());
var attach = messages[j].getAttachments()[0];
var name = attach.getName();
var type = attach.getContentType();
//var data = attach.getDataAsString();
Logger.log( name + " " + type + " " );
var file = uploadXls(attach);
SpreadsheetApp.open(file);
}
}
}
};
标题>驱动API已经内置在GAS中:https://developers.google.com/apps-script/reference/drive/
使用DriveApp,你的问题就会消失;-)
这可能是临时解决方案
步骤1:使用Google表单收集数据到Google电子表格
步骤2:添加Zoho表应用程序到您的谷歌驱动器
在Zoho工作表中转到数据菜单»链接外部数据选择CSVRSS/Atom提要或HTML页面
你可以安排它在特定的时间间隔更新
我喜欢的是VBA和宏在Zoho你也可以做透视图和表格
你可以复制和粘贴Excel VBA到Zoho !我有一个Unpivot VBA,我将在我的表格数据集上运行然后我才能制作数据透视图
很难打败Excel的所有功能,我经常依赖于熟悉的工具!如果我听到什么消息,我会贴出来的 好运