刷新谷歌表格项目列表onOpen

时间:2016-11-09 17:17:54

标签: google-apps-script google-form

我有一个谷歌表格,其中包含所有员工的项目清单。我从MySQL表填充此列表。每次打开谷歌表单时,我都会尝试使用更新的员工列表刷新表单。我有一个打开事件触发器,但由于某种原因列表没有更新。请告诉我。

  function onOpen(){
    var form = FormApp.openById('239jelkwpeowppd-3843ikeifd89wered');

    var conn = mySQL();
    var itemList = getEmpList(conn);

    var item = form.getTitle('Approver:');
    item.setChoiceValues(itemList);
  }

  function getEmpList(conn){
    var sql = conn.createStatement();
    var ds = sql.executeQuery('SELECT empNAME FROM emp');
    var columns = ds.getMetaData().getColumnCount();
    var list=[];
    while (ds.next()) {
      var rowString = '';
      for (var col = 0; col < columns; col++) {
        rowString += ds.getString(col + 1) + '\t';
        list.push(rowString);
      }
    }
    return list;
  }

  function mySQL(){
    var dbConn = Jdbc.getConnection("jdbc:mysql://dbURL","user","password");
    return dbConn;
  }

1 个答案:

答案 0 :(得分:1)

简短回答

当在编辑模式下打开表单时,而不是在视图(响应提交)模式下打开表单时,并且仅当用户有权编辑表单时,才会发生打开事件。

参考

在以下引用中,重点是我的:

来自https://developers.google.com/apps-script/guides/triggers/

  当用户打开电子表格,文档或表单他或她有权编辑时,

onOpen(e)就会运行。

来自https://developers.google.com/apps-script/guides/triggers/installable

  

可安装触发器始终在创建它们的人的帐户下运行。例如,如果您创建一个可安装的打开触发器,它将在您的同事打开文档时运行(,如果您的同事具有编辑权限),但它将作为您的帐户运行。