2012-11-14 2 views
1

GAS 문자열 배열 (.gs 파일)을 HTML 파일에있는 javascript 배열로 변환하는 쉬운 방법이 있습니까? jquery를 사용하여 물건을 만들려고하는데 javascript 배열에 값이 필요합니다. 첫 번째 코드는 연락처 앱에서 이메일 주소를 가져 와서 문자열 배열을 반환하는 함수입니다. 나머지는 cajoled 결과를 분리하기 위해 링크 단절이있는 HTML 샘플입니다 (최소한 나는 당당한 결과를 확신합니다). 또한, 이것은 당신이 아래 볼의 availableTags 변수를 사용하고있어 기본적으로 : http://jqueryui.com/autocomplete/GAS 배열 (.gs)을 자바 스크립트 배열 (.html)

스크립트 파일을

function getAllContacts(){ 
    var contacts = ContactsApp.getContactsByGroup(ContactsApp.getContactGroup("ContactsAppTest")); 
    var email = new Array(); 
    for(var i=0;i<contacts.length;i++){ 
    if(contacts[i].getPrimaryEmail() != ""){ 
    email.push(contacts[i].getPrimaryEmail()); 
    } 
    } 
    return email; 
} 

빈 JS 배열을 생성, 한 시도를 전자 메일 주소의 문자열 배열을 반환 getAllContacts 함수에서 수동으로 채 웁니다. 이 방법은 효과적이지만 생각은별로 효율적이지 않습니다.

var availableTags = []; 
<? 
var temp = getAllContacts(); 
for (var i=0; i<temp.length; i++) { ?> 
availableTags.push(<?= temp[i] ?>); 
<?} ?> 

availableTags.push_m___?availableTags.push('[email protected]'):availableTags.m___('push',['[email protected]']);availableTags.push_m___?availableTags.push('[email protected]'):availableTags.m___('push',['[email protected]']);availableTags.push_m___?availableTags.push('[email protected]'):availableTags.m___('push',['[email protected]']); 

2 시도 설정 availableTags의 =의 getAllContacts는

var availableTags = <?=getAllContacts()?>; 

availableTags='[email protected],[email protected],[email protected]' 

일반 JS 배열

var availableTags = ["[email protected]","[email protected]","[email protected]"]; 

availableTags=['[email protected]','[email protected]','[email protected]']; 

답변

2

이런 식으로 뭔가를 시도 기능 :

<? var temp = getAllContacts(); ?> 
var availableTags = <?= temp ? "[" + temp.toString() + "]" : "null" ?>; 

배열을 초기화해야 클라이에 nt 측면 모든 -에 - 한 번. (나는 당신이이 접촉의 백 또는 수천을 다루지 않는 한, 어쨌든 효율성에 관해서는 너무 걱정하지 않을 것이다. 내가 스스로 가장 가독성이 높은 것으로 뽑을 것이다.)

UPDATE : 결과가 인용되는 것처럼 보이지 않을 것입니다. 그 문자열에 new Function() 또는 eval()을 사용하려는 다른 노력은 GAS에서 출력시 사용하는 Caja 소독제로 인해 실패 할 가능성이 큽니다. 대신 작동해야합니다 :

<? var temp = getAllContacts(); ?> 

    var array = null; 
    var str = <?= temp ? temp.toString() : "" ?>; 
    if(str) array = str.split(","); 
+0

고마워요,하지만 그걸 제대로 초기화하지는 않습니다. 그것은 다음과 같습니다 : availableTags = '[email1 @ test1.com, email2 @ test2.com, email3 @ test3.com]'; 각 이메일 주소는 배열에 별도의 색인이 있어야합니다. 예, 수천 가지가있을 것입니다. 사용자 연락처 목록 및/또는 Apps 도메인을 기반으로 gmail Send 라인을 자동 완성하도록 "조롱하는"방법이없는 한. – user1795832

+0

아, 쥐. 좋아, 작동해야하는 또 다른 방법으로 업데이 트되었습니다. –

+0

네, 그게 더 비슷합니다. 감사! docs ('https : // developers.google.com/apps-script/html_service # PullingData')를 읽는 동안 발견 된 – user1795832