Я пытаюсь создать пользовательское действие Google, чтобы включить машины в учреждении и регистрировать, кто их использует и как долго.Как получить доступ к листам Google без использования служебной учетной записи?
Пока что я просто скопировал копию из этого .В частности, строки 17, 20, 21, 23, 26, 28, 29, 30, 31 и 32. (Я также заменил такие вещи, как «client_email», который, насколько я могу судить, будет работать только с учетной записью службы, котораяЯ не могу использовать по финансовым причинам.)
<code>
'use strict';
const functions = require('firebase-functions')
const {dialogflow} = require('actions-on-google')
const {google} = require('googleapis')
const {WebHookClient} = require('dialogflow-fulfillment')
const sheets = google.sheets('v4')
const WELCOME_INTENT = 'Default Welcome Intent'
const FALLBACK_INTENT = 'Default Fallback Intent'
const MACHINE_OFF_INTENT = 'Machine off'
const MACHINE_ON_INTENT = 'Machine on'
const MACHINE_TYPE_ENTITY = 'machine'
const MEMBER_NUM_ENTITY = 'number-sequence'
const app = dialogflow()
app.intent(FALLBACK_INTENT, (conv) => {
conv.ask("I didn't understand your request")
})
app.intent(MACHINE_OFF_INTENT, (conv) => {
const machine_type = conv.parameters[MACHINE_TYPE_ENTITY].toLowerCase();
const member_number = conv.parameters[MEMBER_NUM_ENTITY];
const spreadsheetID = "1n5VTSy5e8ger8FeKvKXymFMf2DGLK2lAKe_Qw2iG7Vc";
const appl = SpreadsheetApp;
const ss = appl.openById(spreadsheetID);
const sheet = ss.getSheetByName("Authorizations");
var engraverAuth = sheet.getRange("A1:A100");
var woodshopAuth = sheet.getRange("B1:B100");
var metalshopAuth = sheet.getRange("C1:C100");
var allAuth = sheet.getRange("D1:D100");
switch(machine_type){
case "laser engraver":
if (member_number.constructor == engraverAuth || member_number.constructor == allAuth) {
}
else {
conv.ask("You are not authorized to use that machine");
}
break;
case "woodshop":
if (member_number.constructor ==woodshopAuth || member_number.constructor == allAuth) {
}
else {
conv.ask("You are not authorized to use that machine");
}
break;
case "metalshop":
if (member_number.constructor ==metalshopAuth || member_number.constructor == allAuth) {
}
else {
conv.ask("You are not authorized to use that machine");
}
break;
default:
}
})
exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app)
</code>
Это просто выводит ошибку 500 (внутренняя ошибка сервера), которую я предполагаю, потому что я не разрешаю ей использовать листы?Я новичок во всем этом и учусь по ходу дела, поэтому я уверен, что здесь происходит несколько фундаментальных недостатков, которые были бы очевидны для большинства людей, поэтому помощь любого рода приветствуется.