将GAS数组(从.gs)转换为javascript数组(在.html中)

时间:2012-11-14 01:50:30

标签: google-apps-script

是否有一种“简单”的方法将GAS字符串数组(在.gs文件中)转换为HTML文件中存在的javascript数组?我正在尝试使用jquery来做东西,它需要(从我能说的)值在javascript数组中。第一段代码是从联系人应用程序获取电子邮件地址并返回字符串数组的函数。其余的是HTML样本,带有链接中断以分隔他们的哄骗结果(至少我很确定他们的哄骗结果)。此外,这基本上是我使用的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'];

1 个答案:

答案 0 :(得分:2)

尝试这样的事情:

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

这应该在客户端一次初始化数组。 (无论如何,我不会过分担心效率,除非你正在处理成百上千的这些联系。我自己,我会为我发现的最可读的内容进行拍摄。)

更新:如评论中所述,这不起作用,因为结果似乎被引用。 在该字符串上使用new Function()eval()的其他努力失败,可能是由于Caja清洁剂GAS在输出上使用。这应该有效:

  <? var temp = getAllContacts(); ?>

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