Früher habe ich Excel usw. verwendet, als ich das Skript für Pepper erstellt habe, aber jetzt verwende ich Google Spread Sheet, weil ich es überall im Browser oder bei der Entwicklung mit mehreren Personen erstellen möchte. Ich gebe auch die angepasste Konversation in das Skript ein und speichere sie. Daher ist es mühsam, jedes Mal zu kopieren und einzufügen und das verteilte Paket zu aktualisieren, sodass ich es so lesen konnte, wie es aus dem Skript stammt ..
Daher werde ich jeden Artikel als Memo beschreiben. Google SpreadSheet
Ich mache so ein Skript.
Von links
Die Elemente können sich je nach Inhalt der Fertigkeit geringfügig ändern, aber im Grunde ist das Skript so erstellt. Nach dem Erstellen des Skripts "** XXXXXXXXXXXXXXXX (Buch-ID) " nach " https: //docs.google.com/spreadsheets/d/" in der URL von SpreadSheet und " XXXXXXXXXXXXXX (Buch-ID) " danach Notieren Sie sich die Nummer " 1234567 (Blatt-ID) " nach " / edit # gid = **". Diese werden beim Senden einer Anfrage von Choregraphe verwendet.
Google Apps Script
SayText.gs
//E-Mail-Adresse, die gesendet werden soll, wenn ein Fehler auftritt
var managerAddr = "[email protected]";
function doGet(e) {
//Erhält einen Parameter namens param1.
var json = JSON.parse(e.parameter.param1);
//Öffnen Sie den Parameter BookID-Tabelle
var ss = SpreadsheetApp.openById(decodeURI(json["sayDb_id"]));
//Blatt in geöffnete Tabelle holen
var sheets = ss.getSheets();
for (var i in sheets){
var sheet = sheets[i];
//Starten Sie die Verarbeitung, wenn die durch den Parameter angegebene Blatt-ID gefunden wurde
if (sheet.getSheetId() == json["db_id"]){
var say_txt = getSayTxt(sheet);
}
}
//Kehre mit json zurück
return ContentService.createTextOutput(JSON.stringify(say_txt)).setMimeType(ContentService.MimeType.JSON);
}
function getSayTxt(sheet) {
var sCol = 1;
var sRow = 2;
var lRow = sheet.getLastRow();
//Die erste Zeile ist"id"Suchen Sie die Spalte mit dem Namen
var sayIdCol = getSayTxtCol(sheet, "id");
//Ähnlich"pepaLanguage"Suchen Sie die Spalte mit dem Namen
var sayTxtCol = getSayTxtCol(sheet, "pepaLanguage");
//Wenn nicht gefunden, kehren Sie mit einem Fehler zurück.
if (sayTxtCol == 0 || sayIdCol == 0){
GMailApp.sendMail(managerAddr, "Wenn getSay ausgeführt wird", "Es scheint ein Blatt zu geben, in dem die Spalte nicht gefunden werden kann." + sheet.getSheetId());
Logger.log("Columns is not found");
return [];
}
//"id"Wann"pepaLanguage"の位置を確認しておかしなこWannにならないようにしてる。
if (sayIdCol > sayTxtCol){
var data = sheet.getRange(sRow, sayTxtCol, lRow, sayIdCol).getValues();
}else{
var data = sheet.getRange(sRow, sayIdCol, lRow, sayTxtCol).getValues();
}
var json = new Object();
var jsonArray = [];
//ich werde hinzufügen
for (var i = 0; i < data.length -1; i++){
var val = data[i][sayIdCol - 1];
if (val != "" && val != null){
json[String(data[i][sayIdCol - 1])] = data[i][sayTxtCol - 1];
}
}
jsonArray.push(json);
return jsonArray;
}
function getSayTxtCol(sheet, title){
var lCol = sheet.getLastColumn();
for (var i = 1; i <= lCol; i++){
if (sheet.getRange(1, i).getValue() == title){
return i;
break;
}
}
return 0;
}
Choregraphe (Python) Wenn Sie sich Python ansehen, können Sie es sehen.
LoadSayText.py
class MyClass(GeneratedClass):
def __init__(self):
GeneratedClass.__init__(self)
def onLoad(self):
self.memory = ALProxy("ALMemory")
def onUnload(self):
self.memory = None
def onInput_onStart(self):
import urllib, urllib2, json
#Machen Sie Parameter.
#In der eigentlichen App wird es im Speicher übergeben.
p = {
"sayDb_id":XXXXXXXXXXXXXXXX(Book ID),
"db_id":1234567(Sheet ID)
}
data ={}
try:
data['param1'] = json.dumps(p)
url_values = urllib.urlencode(data)
full_url = '%s?%s' % url(API-URL), url_values)
request = urllib2.urlopen(full_url)
self.json = json.loads(request.read(), "utf-8")[0]
if len(self.json) == 0:
self.onNotFound()
return
#Speichern Sie den zurückgegebenen Wert im Speicher.
#Rufen Sie den gespeicherten Text mit SayBox auf und lassen Sie ihn sprechen.
for key, value in self.json.items():
self.memory.insertData("SayText/%d" % int(key), value.encode('utf-8'))
self.onStopped()
except Exception as e:
self.logger.warn('==========Fehlerinhalt==========')
self.logger.warn(e)
self.logger.warn('============================')
self.onError()
Ich fand einen Ort, an dem ich schrieb, und es war wahrscheinlich, dass ein kleiner Fehler auftrat.
Recommended Posts