J'utilisais Excel, etc. lors de la création du script pour Pepper, mais maintenant j'utilise Google Spread Sheet parce que je veux le faire n'importe où sur le navigateur ou lorsque je développe avec plusieurs personnes. J'entre également la conversation ajustée dans le script et je l'enregistre, il est donc difficile de copier et coller à chaque fois et de mettre à jour le package distribué, j'ai donc rendu possible de le lire tel quel à partir du script ..
Par conséquent, je décrirai chaque élément comme un mémo. Google SpreadSheet
Je fais un scénario comme celui-ci.
À partir de la gauche
Les éléments peuvent changer légèrement en fonction du contenu de la compétence, mais fondamentalement, le script est fait comme ça. Après avoir créé le script, "** XXXXXXXXXXXXXXXX (Book ID) " après " https: //docs.google.com/spreadsheets/d/" dans l'URL de la feuille de calcul et " XXXXXXXXXXXXX (Book ID) " après cela Notez le numéro " 1234567 (Sheet ID) " après " / edit # gid = **". Ceux-ci sont utilisés lors de l'envoi d'une requête de Choregraphe.
Google Apps Script
SayText.gs
//Adresse e-mail à envoyer en cas d'erreur
var managerAddr = "[email protected]";
function doGet(e) {
//Reçoit un paramètre nommé param1.
var json = JSON.parse(e.parameter.param1);
//Ouvrez la feuille de calcul BookID de paramètres
var ss = SpreadsheetApp.openById(decodeURI(json["sayDb_id"]));
//Obtenir la feuille dans une feuille de calcul ouverte
var sheets = ss.getSheets();
for (var i in sheets){
var sheet = sheets[i];
//Démarrer le traitement lorsque l'ID de feuille spécifié par le paramètre est trouvé
if (sheet.getSheetId() == json["db_id"]){
var say_txt = getSayTxt(sheet);
}
}
//Retour avec json
return ContentService.createTextOutput(JSON.stringify(say_txt)).setMimeType(ContentService.MimeType.JSON);
}
function getSayTxt(sheet) {
var sCol = 1;
var sRow = 2;
var lRow = sheet.getLastRow();
//La première ligne est"id"Trouvez la colonne avec le nom
var sayIdCol = getSayTxtCol(sheet, "id");
//De même"pepaLanguage"Trouvez la colonne avec le nom
var sayTxtCol = getSayTxtCol(sheet, "pepaLanguage");
//Si non trouvé, retournez avec une erreur.
if (sayTxtCol == 0 || sayIdCol == 0){
GMailApp.sendMail(managerAddr, "Lorsque getSay est exécuté", "Il semble y avoir une feuille où la colonne est introuvable." + sheet.getSheetId());
Logger.log("Columns is not found");
return [];
}
//"id"Quand"pepaLanguage"の位置を確認しておかしなこQuandにならないようにしてる。
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 = [];
//je vais ajouter
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) Si vous regardez Python, vous pouvez le voir.
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
#Créez des paramètres.
#Dans l'application réelle, il est passé en mémoire.
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(URL de l'API), url_values)
request = urllib2.urlopen(full_url)
self.json = json.loads(request.read(), "utf-8")[0]
if len(self.json) == 0:
self.onNotFound()
return
#Enregistrez la valeur renvoyée en mémoire.
#Appelez le texte enregistré avec SayBox et laissez-le parler.
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('==========contenu de l'erreur==========')
self.logger.warn(e)
self.logger.warn('============================')
self.onError()
J'ai trouvé un endroit où j'écrivais et une petite erreur était susceptible de se produire.
Recommended Posts