1

是否有一种“简单”的方法可以将 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'];
4

1 回答 1

2

尝试这样的事情:

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

这应该一次在客户端初始化数组。(无论如何,我不会太担心效率,除非你要处理成百上千个这样的联系人。我自己,我会为我认为最易读的内容而努力。)

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

  <? var temp = getAllContacts(); ?>

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