1

GAS文字列配列(.gsファイル内)をHTMLファイルに存在するjavascript配列に変換する「簡単な」方法はありますか?私はjqueryを使って何かをしようとしていますが、(私が言えることから)値がjavascript配列にある必要があります。最初のコードは、連絡先アプリからメールアドレスを取得し、文字列の配列を返す関数です。残りは、それらのcajoled結果を分離するためのリンクブレークを含むHTMLのサンプルです(少なくとも、それらのcajoled結果はかなり確信しています)。また、これは基本的に、以下に表示されるavailableTags変数を使用しているものです:http: //jqueryui.com/autocomplete/

スクリプトファイル、電子メールアドレスの文字列配列を返します

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;
}

1を試して、空のjs配列を作成し、getAllContacts関数から手動で入力します。これは機能しますが、これを考えるのはあまり効率的ではありません。

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

availableTags.push_m___?availableTags.push('email1@test.com'):availableTags.m___('push',['email1@test.com']);availableTags.push_m___?availableTags.push('email2@test2.com'):availableTags.m___('push',['email2@test2.com']);availableTags.push_m___?availableTags.push('email3@test3.com'):availableTags.m___('push',['email3@test3.com']);

2を試して、availableTags=getAllContacts関数を設定します

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

availableTags='email1@test.com,email2@test2.com,email3@test3.com'

通常のjs配列

var availableTags = ["email1@test.com","email2@test2.com","email3@test3.com"];

availableTags=['email1@test.com','email2@test2.com','email3@test3.com'];
4

1 に答える 1

2

このようなものを試してみてください:

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

これにより、クライアント側のアレイが一度に初期化されます。(これらの連絡先を数百または数千も扱っていない限り、とにかく効率についてはあまり心配しません。私自身、私が最も読みやすいと思ったものを撮影します。)

更新:コメントに記載されているように、結果が引用符で囲まれているように見えるため、これは機能しません。おそらくCajaサニタイザーGASが出力で使用するために、そのストリングを使用するnew Function()、またはそのストリングで使用する他の作業は失敗します。eval()代わりに、これは機能するはずです。

  <? var temp = getAllContacts(); ?>

  var array = null;
  var str  = <?= temp ? temp.toString() : "" ?>;
  if(str) array = str.split(",");
于 2012-11-14T05:08:12.080 に答える