【发布时间】:2024-05-23 11:30:01
【问题描述】:
目标:提交表单并将数据存储到谷歌电子表格
文档:link
到目前为止我做了什么:
var CLIENT_ID = 'my_client_id.apps.googleusercontent.com';
var API_KEY = 'MY_API_KEY';
var DISCOVERY_DOCS = ["https://sheets.googleapis.com/$discovery/rest?version=v4"];
var SCOPES = "https://www.googleapis.com/auth/spreadsheets";
var authorizeButton = document.getElementById('authorize_button');
var signoutButton = document.getElementById('signout_button');
function handleClientLoad() {
gapi.load('client:auth2', initClient);
}
function initClient() {
gapi.client.init({
apiKey: API_KEY,
clientId: CLIENT_ID,
discoveryDocs: DISCOVERY_DOCS,
scope: SCOPES
})
function updateSigninStatus(isSignedIn) {
if (isSignedIn) {
//authorizeButton.style.display = 'none';
//signoutButton.style.display = 'block';
//listMajors();
} else {
//authorizeButton.style.display = 'block';
//signoutButton.style.display = 'none';
}
}
function appendPre(message) {
var pre = document.getElementById('content');
var textContent = document.createTextNode(message + '\n');
pre.appendChild(textContent);
}
function update_docs(data) {
var params = {
spreadsheetId: '1YXMlr_-I45AWM2b9QnLkuLQoI6dq6wEuVOcttOMv9hU',
range: 'A:I', // TODO: Update placeholder value.
valueInputOption: 'RAW',
insertDataOption: 'INSERT_ROWS',
};
var valueRangeBody = {
"range": 'A:I', // 9 cols
"majorDimension": 'ROWS',
"values": [
[
data[0].value,//nom,
data[1].value,//prenom,
data[2].value,//email,
data[3].value,//user_phone,
data[4].value,//company_name,
data[5].value,//user_type,
data[6].value,//account_name,
data[7].value,//password,
data[8].value,//comptes_sources,
]
]
};
var request = gapi.client.sheets.spreadsheets.values.append(params, valueRangeBody);
request.then(function(response) {
console.log(response.result);
}, function(reason) {
console.error('error: ' + reason.result.error.message);
});
}
如果我登录到我的 Google 帐户,我可以成功地将行附加到电子表格中。
问题:我可以在不登录的情况下追加行吗(如果可以,请提供一些文档/代码)? 因为如果我从私人窗口提交表单,它会引发 401 错误。
错误信息:error: Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential.
【问题讨论】:
-
在您的脚本中,您似乎尝试使用 API 密钥附加行。不幸的是,API 密钥不能用于将行附加到电子表格,因为 API 密钥不能用于 POST 和 PUT 方法。请使用从 OAuth2 或服务帐户检索到的访问令牌,如错误消息所述。如果这对您的情况没有用处,我深表歉意。
标签: javascript google-api google-oauth google-sheets-api google-api-js-client