Apps Script를 배우려고합니다. 페이지에서 라디오 버튼을 선택하여 언어를 선택한 다음 선택한 언어의 오디오 파일을 재생하려고합니다. 파일은 언어별로 드라이브 폴더에 있습니다. 각 페이지에는 10 개 언어로 된 약 150 개의 구문이 있습니다. google.script.run과 함께 작동하도록했지만 스크립트를 너무 많이 실행하기 때문에 실패합니다. 그래서 HtmlService.createTemplateFromFile을 통해 객체 배열로 전달하는 것이 좋은 생각이라고 생각했습니다.
나는 이것을 .gs 파일에서 사용했다-그것이 효과가 있다고 생각한다.
function doGet(){
var tmp = HtmlService.createTemplateFromFile('index')
tmp.audioUrls = getDownloadUrls()
return tmp.evaluate()
}
audioUrls 배열은 다음과 같습니다. [{name : "blah", language : "blah", url : "https ..."} ....]
내 html 파일에서 다음 스크립트를 사용하여 URL을 오디오 src로 할당하고 있습니다.
function loadAudio(){
var a = document.getElementsByTagName('audio');
for (var i = 0, l = audios.length; i<l; i++){
var myId = a[i].id;
var qText = a[i].title;
var lang = language = document.querySelector('input[name="language"]:checked').value;
var result = audioUrls.find(file => file.name === qText +".m4a" && file.language === lang);
document.getElementById(myId).setAttribute('src', result.url);
}
}
내가 얻는 오류는 audioUrls.find가 정의되지 않았다고 말합니다. 이것은 HtmlService 템플릿에 포함 된 배열입니다. 누군가 해당 배열의 개체에 액세스하는 방법을 알아 내기 위해 올바른 방향을 알려줄 수 있습니까? 매우 감사! 배우면서 잘못된 것이 많다고 확신하지만이 수준에서는 이해할 수 있습니다. 간단할수록 좋습니다. 감사합니다.
getDownloadUrls()
Google Apps Script 에서 가져온 개체 를 HTML 템플릿 으로 사용하려고합니다 .내 이해가 맞다면이 답변은 어떻습니까? 이것은 몇 가지 가능한 답변 중 하나에 불과하다고 생각하십시오.
audioUrls
HTML에서 사용하기 위해 검색된 값을 getDownloadUrls()
문자열로 설정 하고 문자열은 HTML 측에서 객체로 파싱합니다.스크립트 수정시 다음과 같이 수정하십시오.
function doGet(){
var tmp = HtmlService.createTemplateFromFile('index');
tmp.audioUrls = JSON.stringify(getDownloadUrls()); // Modified
return tmp.evaluate();
}
function loadAudio(){
const audioUrls = JSON.parse(<?= audioUrls ?>); // Added
var a = document.getElementsByTagName('audio');
for (var i = 0, l = audios.length; i<l; i++){
var myId = a[i].id;
var qText = a[i].title;
var lang = language = document.querySelector('input[name="language"]:checked').value;
var result = audioUrls.find(file => file.name === qText +".m4a" && file.language === lang);
document.getElementById(myId).setAttribute('src', result.url);
}
}
내가 당신의 질문을 오해하고 이것이 당신이 원하는 방향이 아니라면 사과드립니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다