使用 Google Apps 脚本将 json 对象上传到 Google 云存储
Upload json object to Google Cloud Storage with Google Apps Script
我正在 Google Apps 脚本中调用 API。响应是一个 json 对象。我想将它发送到 Google 云存储。
这是我目前编写的脚本:
function uploadToGoogleCloudStorage() {
var api_response = '{ "var":"value"}'
var url = 'https://storage.googleapis.com/storage/v1/b/my_bucket_name/o/test?fields=OBJECT'.replace("OBJECT", JSON.stringify(api_response))
var response = UrlFetchApp.fetch(url, {
method: "POST"
});
}
我有以下错误Exception: Invalid argument: https://storage.googleapis.com/storage/v1/b/gtm_container_export/o/test?fields="{%20\"var\":\"value\"}"
我没有找到任何关于如何通过 Google Apps 脚本与 Google 云存储交互的文档。我想知道 UrlFetchApp
是否是正确的方法,或者我是否应该激活特定服务。
这是一个基本的例子 - 你的方法只需要稍微修改一下:
function uploadToGoogleCloudStorage() {
let url = "https://storage.googleapis.com/upload/storage/v1/b/[replace this with your bucket ID]/o?uploadType=media&name=my_test_json.json";
let token = "Bearer [replace this with your oauth token!]";
// this is the content of the document we will create in the bucket
let data = {
'name': 'Bob Smith',
'age': 35,
'pets': ['fido', 'fluffy']
};
let options = {
'method' : 'post',
'headers' : {
'Authorization' : token
},
'contentType': 'application/json',
// Convert the JavaScript object to a JSON string.
'payload' : JSON.stringify(data)
};
var response = UrlFetchApp.fetch(url, options);
console.log( response.getResponseCode() ); // 200 OK
console.log( response.getContentText() );
}
在这种情况下,存储桶中的文件名为“my_test_json.json”,如 name=my_test_json.json
中所定义。
将 [replace this with your bucket ID]
替换为您的存储桶 ID。
将 [replace this with your oauth token!]
替换为您的 oauth 令牌。
如果您不熟悉令牌,那是一个相当大的话题,超出了本问题的范围。但如果它有帮助,这里有一些非常基本的注意事项:为了生成测试令牌,我使用 OAuth 2.0 Playground 创建了一个测试令牌。我选择了“云存储 API”read/write 范围。在第 2 步之后,我将 copy/pasted access_token
字符串从页面右侧的“响应”框中取出。该字符串的长度超过 300 个字符。这不是生产强度的解决方案 - 它仅用于测试。
我正在 Google Apps 脚本中调用 API。响应是一个 json 对象。我想将它发送到 Google 云存储。
这是我目前编写的脚本:
function uploadToGoogleCloudStorage() {
var api_response = '{ "var":"value"}'
var url = 'https://storage.googleapis.com/storage/v1/b/my_bucket_name/o/test?fields=OBJECT'.replace("OBJECT", JSON.stringify(api_response))
var response = UrlFetchApp.fetch(url, {
method: "POST"
});
}
我有以下错误Exception: Invalid argument: https://storage.googleapis.com/storage/v1/b/gtm_container_export/o/test?fields="{%20\"var\":\"value\"}"
我没有找到任何关于如何通过 Google Apps 脚本与 Google 云存储交互的文档。我想知道 UrlFetchApp
是否是正确的方法,或者我是否应该激活特定服务。
这是一个基本的例子 - 你的方法只需要稍微修改一下:
function uploadToGoogleCloudStorage() {
let url = "https://storage.googleapis.com/upload/storage/v1/b/[replace this with your bucket ID]/o?uploadType=media&name=my_test_json.json";
let token = "Bearer [replace this with your oauth token!]";
// this is the content of the document we will create in the bucket
let data = {
'name': 'Bob Smith',
'age': 35,
'pets': ['fido', 'fluffy']
};
let options = {
'method' : 'post',
'headers' : {
'Authorization' : token
},
'contentType': 'application/json',
// Convert the JavaScript object to a JSON string.
'payload' : JSON.stringify(data)
};
var response = UrlFetchApp.fetch(url, options);
console.log( response.getResponseCode() ); // 200 OK
console.log( response.getContentText() );
}
在这种情况下,存储桶中的文件名为“my_test_json.json”,如 name=my_test_json.json
中所定义。
将 [replace this with your bucket ID]
替换为您的存储桶 ID。
将 [replace this with your oauth token!]
替换为您的 oauth 令牌。
如果您不熟悉令牌,那是一个相当大的话题,超出了本问题的范围。但如果它有帮助,这里有一些非常基本的注意事项:为了生成测试令牌,我使用 OAuth 2.0 Playground 创建了一个测试令牌。我选择了“云存储 API”read/write 范围。在第 2 步之后,我将 copy/pasted access_token
字符串从页面右侧的“响应”框中取出。该字符串的长度超过 300 个字符。这不是生产强度的解决方案 - 它仅用于测试。