Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web services 从HTMLService模板调用google.script.run_Web Services_Google Apps Script_Google Sheets - Fatal编程技术网

Web services 从HTMLService模板调用google.script.run

Web services 从HTMLService模板调用google.script.run,web-services,google-apps-script,google-sheets,Web Services,Google Apps Script,Google Sheets,当我尝试执行comand时 var obj=google.script.run.receitaws(cnpj) 从自定义html模板表单中,返回未定义的,但当通过电子表格运行此函数时,返回未定义的 我将在下面发布我的项目: 我组合了许多html文件来创建html结构表单 要加入文件,我使用函数include(file) 通过函数调用我的自定义html模板openlink function openlink() { var template = HtmlService.createTempla

当我尝试执行comand时

var obj=google.script.run.receitaws(cnpj)

从自定义html模板表单中,返回未定义的,但当通过电子表格运行此函数时,返回未定义的

我将在下面发布我的项目:

我组合了许多html文件来创建html结构表单

要加入文件,我使用函数include(file)

通过函数调用我的自定义html模板openlink

function openlink() {
  var template = HtmlService.createTemplateFromFile('tabs')
                    .evaluate()
                    .setSandboxMode(HtmlService.SandboxMode.IFRAME)
                    .setWidth(650);

    SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
      .showModalDialog(template, 'Form');
}
文件选项卡是一个html模板文件

<?!= include('before')?>

  <ul id="tabs-form-servico" class="tabs">
    <li id="tbulli1" class="tab col s2"><a class="" href="#tab1">1 - Tomador do Serviço</a></li>
    <li id="tbulli2" class="tab col s2"><a class="active" href="#tab2">2 - Prestador do Serviço</a></li>
    <li id="tbulli3" class="tab col s2 hide"><a href="#tab3">3 - Serviço Executado</a></li>
    <li id="tbulli4" class="tab col s2 hide"><a href="#tab4">4 - Regras Retenção Municipal</a></li>
    <li id="tbulli5" class="tab col s2 hide"><a href="#tab5">5 - Regras Retenção Previdenciario</a></li>
    <li id="tbulli6" class="tab col s2 hide"><a href="#tab6">6 - Regras Retenções Federal</a></li>
    <li id="tbulli7" class="tab col s2 hide"><a href="#tab7">7 - Cálculo Retenções</a></li>
    <li id="tbulli8" class="tab col s2 hide"><a href="#tab8">8 - Pagamento</a></li>
  </ul>
  <div id="tab1" class="col s12">Criar</div>
  <div id="tab2" class="col s12"><?!= include('prestadorservico')?></div>
  <div id="tab3" class="col s12">Teste bem sucedido</div>
  <div id="tab4" class="col s12"></div>
  <div id="tab5" class="col s12"></div>
  <div id="tab6" class="col s12"></div>
  <div id="tab7" class="col s12"></div>
  <div id="tab8" class="col s12"></div>

  <script>
    $(document).ready(function(){
      $('#tabs-form-servico').tabs({'swipeable': true });
      Materialize.updateTextFields();
    });

    function close() {
      google.script.host.close()'
    }


  </script>

<?!= include('after')?>
<? var data = SpreadsheetApp
    .openById('my_id_Sheet')
    .getSheetByName('Municipios')
    .getRange(3, 4, 5575)
    .getValues(); ?>
    <select>
      <option value="" disabled selected>Escolha a Cidade/UF</option>    
      <? for (var i = 0; i < data.length; i++) { ?>
      <option value="<?!= i ?>"><?!= data[i] ?></option>
      <? } ?>
    </select>
    <label>Cidade/UF</label>
Function.gsCNAESecundarios()

Function.gsreceitaws()


我发现了我的问题。在这种情况下,我需要运行一个

.withSuccessHandler(onSuccess)
要获取函数返回,请调用

我试过这个,它成功了。 我更改了文件中的函数

  function consultacnpj(){
    var cnpj = $('#cnpj').val().toString();
    if (cnpj.length==14){
      google.script.run
        .withSuccessHandler(onSuccessCNPJ)
        .withFailureHandler(onFailureCNPJ)
        .receitaws(cnpj);
      function onFailureCNPJ(error) {
        Materialize.toast("ERROR: " + error.message, 3000)

      }

      function onSuccessCNPJ(obj) {
              $('#contratado_nome').val(obj.nome);
              $('#address').val(obj.logradouro);
              $('#number').val(obj.numero);
              $('#compl').val(obj.complemento);
              $('#bairro').val(obj.bairro);
              $('#cep').val(obj.cep);
              $('#city').val((obj.municipio + '/' + obj.uf))
              var code = google.script.run
                .withSuccessHandler(onSuccessCNAEP)
                .withFailureHandler(onFailureCNAEP)
                .codeCNAE(obj.atividade_principal[0].code);
              function onFailureCNAEP(error) {
                Materialize.toast("ERROR: " + error.message, 3000)

              }
              function onSuccessCNAEP(code) {
                $('#cnaep').val(code + ' - ' + obj.atividade_principal[0].text);
              };

              google.script.run
                .withSuccessHandler(onSuccessCNAES)
                .withFailureHandler(onFailureCNAES)
                .CNAESecundarios(obj.atividades_secundarias);
              function onFailureCNAES(error) {
                Materialize.toast("ERROR: " + error.message, 3000)                      
              }
              function onSuccessCNAES(codes) {
                $('#cnaes').val(codes);
              }
              Materialize.updateTextFields();
              Materialize.updateTextFields();

      }                
    } else {
      Materialize.toast('Preencha um CNPJ valido.', 3000)
    }
  }
如果有人有其他建议,请张贴。 我还在学习谷歌应用程序脚本和javascript。
谢谢

我发现了我的问题。在这种情况下,我需要运行一个

.withSuccessHandler(onSuccess)
要获取函数返回,请调用

我试过这个,它成功了。 我更改了文件中的函数

  function consultacnpj(){
    var cnpj = $('#cnpj').val().toString();
    if (cnpj.length==14){
      google.script.run
        .withSuccessHandler(onSuccessCNPJ)
        .withFailureHandler(onFailureCNPJ)
        .receitaws(cnpj);
      function onFailureCNPJ(error) {
        Materialize.toast("ERROR: " + error.message, 3000)

      }

      function onSuccessCNPJ(obj) {
              $('#contratado_nome').val(obj.nome);
              $('#address').val(obj.logradouro);
              $('#number').val(obj.numero);
              $('#compl').val(obj.complemento);
              $('#bairro').val(obj.bairro);
              $('#cep').val(obj.cep);
              $('#city').val((obj.municipio + '/' + obj.uf))
              var code = google.script.run
                .withSuccessHandler(onSuccessCNAEP)
                .withFailureHandler(onFailureCNAEP)
                .codeCNAE(obj.atividade_principal[0].code);
              function onFailureCNAEP(error) {
                Materialize.toast("ERROR: " + error.message, 3000)

              }
              function onSuccessCNAEP(code) {
                $('#cnaep').val(code + ' - ' + obj.atividade_principal[0].text);
              };

              google.script.run
                .withSuccessHandler(onSuccessCNAES)
                .withFailureHandler(onFailureCNAES)
                .CNAESecundarios(obj.atividades_secundarias);
              function onFailureCNAES(error) {
                Materialize.toast("ERROR: " + error.message, 3000)                      
              }
              function onSuccessCNAES(codes) {
                $('#cnaes').val(codes);
              }
              Materialize.updateTextFields();
              Materialize.updateTextFields();

      }                
    } else {
      Materialize.toast('Preencha um CNPJ valido.', 3000)
    }
  }
如果有人有其他建议,请张贴。 我还在学习谷歌应用程序脚本和javascript。 谢谢

function codeCNAE(cod){
  cod = cod.replace('.', '');
  var cods = cod.split('-');
  cod = cods[0]+'-'+cods[1]+'/'+cods[2];
  return cod;
}
function CNAESecundarios(obj){
  var i, codes = "";
  for (i in obj) {
    if (codes == '') {
      codes = '{' + codeCNAE(obj[i].code)
    } else {
      codes = codes + ', ' + codeCNAE(obj[i].code)
    }
    codes = codes + ' - ' + obj[i].text
  }
  codes = codes + '}'
  //Logger.log(codes);
  return codes;
}
function receitaws(cnpj) {
  Utilities.sleep(Math.random() * 1000);
  var token = "my_id_token";
  var url, response, obj;

  url = 'http://receitaws.com.br/v1/cnpj/'
  + cnpj;
  response = UrlFetchApp.fetch(url, {'muteHttpExceptions': true});
  obj = JSON.parse(response);  

  if (obj.status == "ERROR" && obj.message !="CNPJ inválido") {
    Logger.log('Versão Paga');
    url = 'https://receitaws.com.br/v1/cnpj/'
      + cnpj
      + "/days/0";
    response = UrlFetchApp.fetch(url, {'muteHttpExceptions': true, 'headers': {'Authorization': 'Bearer ' + token}});
    obj = JSON.parse(response);
  }
  return obj;    
}
.withSuccessHandler(onSuccess)
  function consultacnpj(){
    var cnpj = $('#cnpj').val().toString();
    if (cnpj.length==14){
      google.script.run
        .withSuccessHandler(onSuccessCNPJ)
        .withFailureHandler(onFailureCNPJ)
        .receitaws(cnpj);
      function onFailureCNPJ(error) {
        Materialize.toast("ERROR: " + error.message, 3000)

      }

      function onSuccessCNPJ(obj) {
              $('#contratado_nome').val(obj.nome);
              $('#address').val(obj.logradouro);
              $('#number').val(obj.numero);
              $('#compl').val(obj.complemento);
              $('#bairro').val(obj.bairro);
              $('#cep').val(obj.cep);
              $('#city').val((obj.municipio + '/' + obj.uf))
              var code = google.script.run
                .withSuccessHandler(onSuccessCNAEP)
                .withFailureHandler(onFailureCNAEP)
                .codeCNAE(obj.atividade_principal[0].code);
              function onFailureCNAEP(error) {
                Materialize.toast("ERROR: " + error.message, 3000)

              }
              function onSuccessCNAEP(code) {
                $('#cnaep').val(code + ' - ' + obj.atividade_principal[0].text);
              };

              google.script.run
                .withSuccessHandler(onSuccessCNAES)
                .withFailureHandler(onFailureCNAES)
                .CNAESecundarios(obj.atividades_secundarias);
              function onFailureCNAES(error) {
                Materialize.toast("ERROR: " + error.message, 3000)                      
              }
              function onSuccessCNAES(codes) {
                $('#cnaes').val(codes);
              }
              Materialize.updateTextFields();
              Materialize.updateTextFields();

      }                
    } else {
      Materialize.toast('Preencha um CNPJ valido.', 3000)
    }
  }