api - 如何将文档发送到 Doc AI API
问题描述
一段时间以来,我一直在努力寻找一种使用Google Apps Script将 JSON 请求中的 PDF 文档发送到 Document AI Solutions 的方法。
我正在使用 OCR 处理器,这里是文档:https : //cloud.google.com/document-ai/docs/ocr 我从 GCP 设置了一些变量,例如 PROJECT_ID、CLIENT_ID、CLIEND_PWD。
此外,fileID 是我的云端硬盘中的文件 ID。这是一个PDF文件。
这是我使用的代码:
function test(){
var result=getFileInformations(fileID);
Logger.log(result);
}//function test(){
function getFileInformations (fileID) {
//var apiEndpoint = "https://eu-documentai.googleapis.com/v1beta3/projects/"+PROJECT_ID+"/locations/eu/processors/" + PROCESSOR_ID:method
var apiEndpoint = "https://eu-documentai.googleapis.com/v1beta3/projects/"+PROJECT_ID+"/locations/eu/processors/" + PROCESSOR_ID + ":process"
var token = ScriptApp.getOAuthToken();
// Create our json request
var nlData = {
document: {
//'mimetype':MimeType.PDF,
content: DriveApp.getFileById(fileID).getBlob()
}
};//var nlData = {
var options = {};
options.headers = {"Authorization": "Basic " + Utilities.base64Encode(CLIENT_ID + ":" + CLIEND_PWD)};
options.payload = JSON.stringify(nlData);
// And make the call
var response = UrlFetchApp.fetch(apiEndpoint, options);
var result = JSON.parse(response);
};//function getFileInformations (fileID) {
我收到一条错误消息,听起来像“异常:服务器上出现错误。请道歉并稍后再试”,这指出了这一行:
content: DriveApp.getFileById(fileID).getBlob()
如果它,你有什么线索可以出去吗?
提前谢谢了
奥雷连
编辑
根据我得到的最后信息,这是我目前的情况。我认为我的第一个错误是将我的身份验证方法与我的 getFileInformations 函数分开,所以我将其更改为最终得到这个:
新的主要功能是docAISolutionAPI。我认为在那里显示 getService() 函数没有用,请记住它有效并且service.hasAccess()
运行成功。
function docAISolutionAPI() {
var service = getService();
if (service.hasAccess()) {
var response = getFileInformations (fileID)
Logger.log(response);
} else {
var authorizationUrl = service.getAuthorizationUrl();
Logger.log('Open the following URL and re-run the script: %s',
authorizationUrl);
}
}//function docAISolutionAPI() {
function getFileInformations (fileID) {
//var apiEndpoint = "https://eu-documentai.googleapis.com/v1beta3/projects/"+PROJECT_ID+"/locations/eu/processors/" + PROCESSOR_ID:method
var apiEndpoint = "https://eu-documentai.googleapis.com/v1beta3/projects/"+PROJECT_ID+"/locations/eu/processors/" + PROCESSOR_ID + ":process";
var token = ScriptApp.getOAuthToken();
var test=DriveApp.getFileById(fileID).getName();
// Create our json request
var param = {
'document': {
'mimeType':'application/pdf',
'content': DriveApp.getFileById(fileID).getBlob()
// 'content':jsonContent
}//inputConfig': {
};//var param = {
var jsonresquest=JSON.stringify(param);
var options = {};
options.headers = {Authorization:"Bearer "+token};
// options.payload = JSON.stringify(param);
options.payload = param;
options.method = "POST";
options.muteHttpExceptions=true;
Logger.log("options.payload : " + options.payload);
// And make the call
var response = UrlFetchApp.fetch(apiEndpoint, options);
var result = JSON.parse(response);
return result;
};//function getFileInformations (fileID) {
正如你所看到的,有一些关于失败尝试获取某些东西的评论。
我现在得到的错误是:
{error={details=[{fieldViolations=[{description=收到无效的 JSON 有效负载。未知名称“文档”:无法绑定查询参数。'document' 是一种消息类型。参数只能绑定到原始类型。}]、@type=type.googleapis.com/google.rpc.BadRequest}]、status=INVALID_ARGUMENT、message=收到的 JSON 负载无效。未知名称“文档”:无法绑定查询参数。'document' 是一种消息类型。参数只能绑定到原始类型。,code=400.0}}
再次:非常非常感谢您的帮助,我正在为它疯狂^^'
解决方案
推荐阅读
- excel - PowerQuery - 基于辅助字段的聚合期间的 List.PositionOf()
- javascript - UnhandledPromiseRejectionWarning:RequestError:错误:无效的URI“0”
- bash - bash检查目录中是否存在给定文件在通配符上失败
- r - 如何将一个充满双精度的列表快速转换为整数?
- python - 当某些文件中的公共列重叠但其他文件不重叠时,如何将多个 CSV 文件合并到 DataFrame 中
- web-scraping - Cheerio 在脚本标签 Node.js 中访问对象
- excel - 检查列中的值,允许并非所有列都存在
- arrays - PowerAutomate 中未命名列上的筛选器数组
- jenkins - Jenkins 是否必须结帐才能获得 Jenkinsfile?
- excel - 条件格式仅在 Excel 中的范围内的值