Javascript Google Sheets API在未登录的情况下将行附加到电子表格时出错
目标:提交表单并将数据存储到谷歌电子表格 文件: 到目前为止我所做的:Javascript Google Sheets API在未登录的情况下将行附加到电子表格时出错,javascript,google-api,google-oauth,google-sheets-api,google-api-js-client,Javascript,Google Api,Google Oauth,Google Sheets Api,Google Api Js Client,目标:提交表单并将数据存储到谷歌电子表格 文件: 到目前为止我所做的: 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/aut
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错误
错误消息:
错误:请求缺少所需的身份验证凭据。需要OAuth 2访问令牌、登录cookie或其他有效的身份验证凭据。
我认为在开始处理此问题之前,您需要了解一些事情
私有数据和公共数据之间存在差异
- 公共数据,搜索公开上传的youtube视频
- 私人数据,我的个人gmail帐户,驱动器帐户,日历帐户
假设这是您个人拥有的工作表,您可以设置一个服务帐户进行身份验证,并授予服务帐户对该工作表的访问权限,这样您就可以在不登录的情况下为您进行更改。然而,这取决于应用程序的工作方式和使用的语言。我认为javascript不支持服务帐户身份验证。在脚本中,您似乎试图使用API密钥追加行。不幸的是,API键不能用于向电子表格追加行,因为API键不能用于POST和PUT方法。如错误消息所示,请使用从OAuth2或服务帐户检索的访问令牌。如果这对你的情况不是有用的信息,我道歉。谢谢你的建议。是,javascript不支持服务帐户身份验证。解决了从javascript转换为php的问题。