0

Я пытаюсь сделать часть кода (извините, потерял ссылку на оригинал), но я борюсь и не могу пройти мимо сообщения об ошибке «Сценарий завершен, но возвращаемое значение не поддерживается возвратом тип". Я смотрел на изменение этого на строку, но, честно говоря, я на пределе своей способности понять, что я пытаюсь сделать. Любая помощь была высоко оценена.html выпадающее меню с SandBoxMode.IFRAME

code.gs является:

function getMenu1() { 
    var t = HtmlService.createTemplateFromFile('myForm'); 
    t.data = SpreadsheetApp 
     .openById('11_3xQkJdQ172_97LWUoOu22qUMBS-vSrr7TN9bqWicg') 
     .getSheetByName('PROJECTS') 
     .getRange('D:D') 
     .getValues(); 
    return t.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME); 

    Logger.log('doGetMenu1 ran'); 
} 

и myform.html является:

<!DOCTYPE html> 
<html> 
    <head> 
    <base target="_top"> 
    <body style="font-family: Arial, Helvetica, sans-serif"> 

     <div> 
     <input class="left" type="text" name="cuStaff" id="cuStaff" style="width=150px" required> 
      <datalist id="cuStaff"> 
      </datalist> 

     <input class="left" type="date" name="dateA" id="dateA" style="width:150px" required> 
     <input class="left" type="time" name="timeA" id="timeA" style="width:75px" required> 

     </div> 



    </body> 

<select id="cuStaff"> 
    <option> Choose a option </option> 
</select > 

<body onload = "addList()"></body> 

<script> 
    function addList() { 
    console.log('addList ran!'); 

    google.script.run 
     .withFailureHandler(onFailure) 
     .withSuccessHandler(injectMyContent) 
     .getMenu1(); 
    }; 

    window.injectMyContent = function(argReturnedData) { 
    for(var i = 0; i < argReturnedData.length; i++) { 
     var opt = argReturnedData[i]; 
     var document = myForm.html 
     var el = document.createElement("option"); 
     var el = document 
     el.text = opt; 
     el.value = opt; 
     select.appendChild(el); 
    }; 
    }; 

    window.onFailure = function(err) { 
    alert('There was an error! ' + err.message); 
    }; 

</script > 

    </head> 
</html> 

JSFiddle here

ответ

2

Похоже, что 2 функции смешивания. Попробуйте:

function doGet() { 
    var t = HtmlService.createTemplateFromFile('myForm'); 
    return t.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME); 
} 

function getMenu1() { 
    var data = SpreadsheetApp 
     .openById('11_3xQkJdQ172_97LWUoOu22qUMBS-vSrr7TN9bqWicg') 
     .getSheetByName('PROJECTS') 
     .getRange('D:D') 
     .getValues(); 
    Logger.log('getMenu1 ran') 
    return data; 
} 
+0

Спасибо за ответ Bryan P. Это делает что-то в качестве консоли показывает навигацию к сценарию и регистратор захватив «getMenu1 побежал», но он теперь говорит о "„данные“не – witham

+0

Извините, Bryan P, у меня была опечатка. Это потянет данные из электронной таблицы и покажет ее в журнале. Это не толкает его. Клиентская сторона выпадала, но я буду работать над этим и посмотреть, смогу ли я ее взломать. – witham

+0

попробуйте изменить 'window.injectMyContent = function' просто' function injectMyContent' –

Смежные вопросы