고통 스러움을 너무 많이 마시는 것을 GoogleHome에 확인하십시오.
소개
Google Home, IFTTT, Google 스프레드시트를 사용하여 자체 음성 명령을 사용하여 로그를 기록합니다.
를 읽고 있고, 통증과 같은 통복적인 약(하루 n회까지, 전회부터 n시간 이상 경과 후 복용 가능)의 체크에 사용할 수 없는 것이라고 작성해 보았다.
Google 스프레드시트에 행 추가 IFTTT 레시피
「this」도 「that」도 평소의 순서
Google 스프레드시트 콘텐츠
항상 날짜 정보는 마지막 행에 일단 기록됩니다.
복용 체크
addDate.jsfunction addDate() {
setDate(1, "yyyy/M/d");
setDate(2, "H:m:s");
checkDate();
}
날짜와 시간을 셀에 설정한 후 checkDate()를 호출하도록 추가했습니다.
checkDate.jsfunction checkDate() {
// 宣言
var lineUrl = "https://maker.ifttt.com/trigger/drug_log/with/key/xxxxxxxx?value1=";
var googleurl = "https://xxxxxxxx.ngrok.io/google-home-notifier";
var ansText;
searchDate(dateRows);//当日と同一日セルの取得
switch (dateRows.length) {
case(1):
ansText = "服用可能です(本日一回目)"
break
case(2):
var dates2 = sheet.getRange(1, 2, lastrow).getValues()
var m1 = Moment.moment(dates2[dates2.length - 2][0])
var m2 = Moment.moment(dates2[dates2.length - 1][0])
var m3 = m2.diff(m1, 'h', false)
var m4 = 4 - m3
if (m3 < 4) {
// 一定時間以上経過していない場合はrowを削除
sheet.deleteRow(lastrow)
ansText ="四時間以上間を開けて服用しましょう。あと" + m4 + "時間経過後服用できます"
} else {
ansText ="服用可能です(本日二回目)"
}
break
case(3):
ansText = "服用は一日二回までです。"
break
default:
sheet.deleteRow(lastrow)
ansText = "服用は一日二回までです。"
break
}
// LINE
UrlFetchApp.fetch(lineUrl + ansText);
\
// GoogleHome
var payload =
{
"text" : ansText
};
var options =
{
"method" : "post",
"payload" : payload
};
var response = UrlFetchApp.fetch(googleurl, options);
}
function addDate() {
setDate(1, "yyyy/M/d");
setDate(2, "H:m:s");
checkDate();
}
function checkDate() {
// 宣言
var lineUrl = "https://maker.ifttt.com/trigger/drug_log/with/key/xxxxxxxx?value1=";
var googleurl = "https://xxxxxxxx.ngrok.io/google-home-notifier";
var ansText;
searchDate(dateRows);//当日と同一日セルの取得
switch (dateRows.length) {
case(1):
ansText = "服用可能です(本日一回目)"
break
case(2):
var dates2 = sheet.getRange(1, 2, lastrow).getValues()
var m1 = Moment.moment(dates2[dates2.length - 2][0])
var m2 = Moment.moment(dates2[dates2.length - 1][0])
var m3 = m2.diff(m1, 'h', false)
var m4 = 4 - m3
if (m3 < 4) {
// 一定時間以上経過していない場合はrowを削除
sheet.deleteRow(lastrow)
ansText ="四時間以上間を開けて服用しましょう。あと" + m4 + "時間経過後服用できます"
} else {
ansText ="服用可能です(本日二回目)"
}
break
case(3):
ansText = "服用は一日二回までです。"
break
default:
sheet.deleteRow(lastrow)
ansText = "服用は一日二回までです。"
break
}
// LINE
UrlFetchApp.fetch(lineUrl + ansText);
\
// GoogleHome
var payload =
{
"text" : ansText
};
var options =
{
"method" : "post",
"payload" : payload
};
var response = UrlFetchApp.fetch(googleurl, options);
}
판정 및 행 조작을 수행 한 후 LINE Notifify 및 google-home-notifier로 보냅니다.
searchDate.js
function searchDate(dateRows) {
var tDate = formatDate(new Date(), "yyyy/M/d");
lastrow = sheet.getLastRow();
var dates = sheet.getRange(1, 1, lastrow).getDisplayValues();
for(var lr = lastrow; lr >= 1; lr--){
if(dates[lr - 1] == tDate){
dateRows.push(lr);
}
}
return dateRows;
}
오늘 날짜를 검색하고 날짜 행과 일치하는 행 번호를 배열에 추가합니다.
셀에 표시하고 있는 내용을 취득하기 위해서 getValues() 대신 getDisplayValues()
이번에 빠진 곳
미래를 향해
결론
최근 IFTTT에서 Google 스프레드 시트 행을 추가하는 대신 셀 값을 덮어 쓰고 업데이트 할 수있는 기능이 추가되었습니다. 셀 값으로 검색하고 결과를 반환하여 셀 값을 지울 수 있습니다.
Reference
이 문제에 관하여(고통 스러움을 너무 많이 마시는 것을 GoogleHome에 확인하십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/natu_n/items/019d16e73af17e2d8dea텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)