datalist选中值写入Google Sheets时显示为null的问题求助
问题原因与解决方案
核心问题出在你获取输入框值的时候用错了元素ID!
看你的前端代码:
- 你的
<input>元素的ID是idPort1aListe - 但你在
validerAd()函数里写的是document.getElementById("idPort1a").value
这就导致你实际拿到的是null(因为找不到ID为idPort1a的input元素),所以传给Google Apps Script的nouvAdresse函数的参数自然是null,最终表格里就被写入了null。
修正后的前端代码
只需要把获取元素的ID改成正确的idPort1aListe即可:
<script> function validerAd() { // 这里把id改成input实际的id:idPort1aListe let idPort1a = document.getElementById("idPort1aListe").value; google.script.run.nouvAdresse(idPort1a); } </script> <form> <p8> <label for="idPort1a" id="labelPort1a">Choisissez un switch :</label> <!-- input的id是idPort1aListe,list属性对应datalist的id idPort1a,这部分是对的 --> <input list="idPort1a" name="idPort1a" id="idPort1aListe"> <datalist id="idPort1a"> <br/> <? for (var i = 0; i < mesSwitchs.length; i++) { ?> <option value="<?= mesSwitchs[i][0] ?>" ><?= mesSwitchs[i][0] ?></option> <? } ?> </datalist> </p8> </form>
额外调试建议
你可以在函数里加个控制台日志,确认拿到的值是否正确,方便后续排查:
function validerAd() { let idPort1a = document.getElementById("idPort1aListe").value; console.log("选中的开关值:", idPort1a); // 打开浏览器控制台查看输出 google.script.run.nouvAdresse(idPort1a); }
你的Google Apps Script部分代码是没问题的,只要前端传对了值,就能正常写入表格。
内容的提问来源于stack exchange,提问作者Thibaud GARNIER




