在Google应用程序脚本中使用IFRAME沙盒实现jquery自动完成
我在表单中有一个输入字段,我想在其中包含autocomplete以显示用户Google contacts目录中的所有联系人 理想的解决方案是使用GoogleContactsAPI(但是,我还没有实现这一点) 尽管如此,我目前在原生沙箱中使用jquery autocomplete函数处理ContactsApp类 我的问题是:在Google应用程序脚本中使用IFRAME沙盒实现jquery自动完成,jquery,google-apps-script,Jquery,Google Apps Script,我在表单中有一个输入字段,我想在其中包含autocomplete以显示用户Google contacts目录中的所有联系人 理想的解决方案是使用GoogleContactsAPI(但是,我还没有实现这一点) 尽管如此,我目前在原生沙箱中使用jquery autocomplete函数处理ContactsApp类 我的问题是: 为什么它不能在IFRAME中工作?我有其他代码停止在本机中工作,所以我真的需要在IFRAME中找到一个解决方案 如果在IFRAME中不可能,您是否有使用Contacts AP
function showSidebar() {
var ui = HtmlService.createHtmlOutputFromFile('Sidebar1')
.setSandboxMode(HtmlService.SandboxMode.NATIVE)
FormApp.getUi().showSidebar(ui);
}
function getAvailableTags() {
var contacts = ContactsApp.getContacts();
var list = [];
for(var i = 0; i < contacts.length; i++){
var emails = contacts[i].getEmails();
if(emails[0] != undefined){
list.push(emails[0].getAddress());
}
}
return( list );
}
function showSidebar() {
var ui = HtmlService.createHtmlOutputFromFile('Sidebar1')
.setSandboxMode(HtmlService.SandboxMode.NATIVE)
FormApp.getUi().showSidebar(ui);
}
function getAvailableTags() {
var contacts = ContactsApp.getContacts();
var list = [];
for(var i = 0; i < contacts.length; i++){
var emails = contacts[i].getEmails();
if(emails[0] != undefined){
list.push(emails[0].getAddress());
}
}
return( list );
}
函数showSidebar(){
var ui=HtmlService.createHtmlOutputFromFile('Sidebar1')
.setSandboxMode(HtmlService.SandboxMode.NATIVE)
FormApp.getUi().showSidebar(ui);
}
函数getAvailableTags(){
var contacts=ContactsApp.getContacts();
var列表=[];
对于(变量i=0;i
Html文件
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
<input type="text" class="width-100" id="user-input1" autocomplete="on">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script>
$(function() {
google.script.run.withSuccessHandler(buildTagList)
.getAvailableTags();
});
function buildTagList(list) {
$( "#user-input1" ).autocomplete({
source: function(request, response) {
var results = $.ui.autocomplete.filter(list, request.term);
response(results.slice(0, 10));
},
minLength: 2,
autoFocus: true,
delay: 500
});
}
</script>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css"> **<--- this is originally incorrect--->**
<input type="text" class="width-100" id="user-input1" autocomplete="on">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script> **<-- this was also originally incorrect-->**
<script>
$(function() {
google.script.run.withSuccessHandler(buildTagList)
.getAvailableTags();
});
function buildTagList(list) {
$( "#user-input1" ).autocomplete({
source: function(request, response) {
var results = $.ui.autocomplete.filter(list, request.term);
response(results.slice(0, 10));
},
minLength: 2,
autoFocus: true,
delay: 500
});
}
</script>
$(函数(){
google.script.run.withSuccessHandler(buildTagList)
.getAvailableTags();
});
函数buildTagList(列表){
$(“#用户输入1”)。自动完成({
来源:功能(请求、响应){
var results=$.ui.autocomplete.filter(列表、请求、术语);
反应(结果切片(0,10));
},
最小长度:2,
自动对焦:对,
延误:500
});
}
在查看@Zig Mandel提供的HtmlService限制后,我意识到包含的库不是来自安全页面。因此找到了解决问题的(https)
谷歌脚本
function showSidebar() {
var ui = HtmlService.createHtmlOutputFromFile('Sidebar1')
.setSandboxMode(HtmlService.SandboxMode.NATIVE)
FormApp.getUi().showSidebar(ui);
}
function getAvailableTags() {
var contacts = ContactsApp.getContacts();
var list = [];
for(var i = 0; i < contacts.length; i++){
var emails = contacts[i].getEmails();
if(emails[0] != undefined){
list.push(emails[0].getAddress());
}
}
return( list );
}
function showSidebar() {
var ui = HtmlService.createHtmlOutputFromFile('Sidebar1')
.setSandboxMode(HtmlService.SandboxMode.NATIVE)
FormApp.getUi().showSidebar(ui);
}
function getAvailableTags() {
var contacts = ContactsApp.getContacts();
var list = [];
for(var i = 0; i < contacts.length; i++){
var emails = contacts[i].getEmails();
if(emails[0] != undefined){
list.push(emails[0].getAddress());
}
}
return( list );
}
函数showSidebar(){
var ui=HtmlService.createHtmlOutputFromFile('Sidebar1')
.setSandboxMode(HtmlService.SandboxMode.NATIVE)
FormApp.getUi().showSidebar(ui);
}
函数getAvailableTags(){
var contacts=ContactsApp.getContacts();
var列表=[];
对于(变量i=0;i
Html文件
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
<input type="text" class="width-100" id="user-input1" autocomplete="on">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script>
$(function() {
google.script.run.withSuccessHandler(buildTagList)
.getAvailableTags();
});
function buildTagList(list) {
$( "#user-input1" ).autocomplete({
source: function(request, response) {
var results = $.ui.autocomplete.filter(list, request.term);
response(results.slice(0, 10));
},
minLength: 2,
autoFocus: true,
delay: 500
});
}
</script>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css"> **<--- this is originally incorrect--->**
<input type="text" class="width-100" id="user-input1" autocomplete="on">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script> **<-- this was also originally incorrect-->**
<script>
$(function() {
google.script.run.withSuccessHandler(buildTagList)
.getAvailableTags();
});
function buildTagList(list) {
$( "#user-input1" ).autocomplete({
source: function(request, response) {
var results = $.ui.autocomplete.filter(list, request.term);
response(results.slice(0, 10));
},
minLength: 2,
autoFocus: true,
delay: 500
});
}
</script>
****
****
$(函数(){
google.script.run.withSuccessHandler(buildTagList)
.getAvailableTags();
});
函数buildTagList(列表){
$(“#用户输入1”)。自动完成({
来源:功能(请求、响应){
var results=$.ui.autocomplete.filter(列表、请求、术语);
反应(结果切片(0,10));
},
最小长度:2,
自动对焦:对,
延误:500
});
}