上传文件上的google apps脚本和javascript重复数据

上传文件上的google apps脚本和javascript重复数据,javascript,google-apps-script,google-sheets,google-drive-api,Javascript,Google Apps Script,Google Sheets,Google Drive Api,我有一个带有GAS的web应用程序,它可以创建文件夹、上传文件、设置权限并将注册表保存在一张纸上。 当函数完成时,应用程序会复制文件,并在google工作表中复制一个寄存器。我不知道如何避免这个错误,控制台也不会显示错误。 会发生什么?我如何预防这个问题 这是我的服务器端功能代码: function fileExists(idfileexist,folderId) { var consulta = DriveApp.getFileById(idfileexist).getName() v

我有一个带有GAS的web应用程序,它可以创建文件夹、上传文件、设置权限并将注册表保存在一张纸上。 当函数完成时,应用程序会复制文件,并在google工作表中复制一个寄存器。我不知道如何避免这个错误,控制台也不会显示错误。 会发生什么?我如何预防这个问题

这是我的服务器端功能代码:

function fileExists(idfileexist,folderId) {

var consulta = DriveApp.getFileById(idfileexist).getName()

  var files = DriveApp.getFilesByName(consulta);
  while (files.hasNext()) {
    var file = files.next();
    var folders = file.getParents();
    if (folders.hasNext()) {
      var folder = folders.next();
      if (folder.getId() == folderId) {
        
        return true;
        
      }
    }
  }
  
  return false;
}

function removepermission(id, user){
DriveApp.getFileById(id).removeEditor(user)
}
function appendrow(idfile,sheet,numsip,rut,timestamp,user,idfolder,input,ticket){

var values = SpreadsheetApp.openById(idfile);
var ss= values.getSheetByName(sheet);
ss.appendRow([numsip,rut,timestamp,user,idfolder,input,ticket])

}

function setpermisoswriter(id,array){

var file = DriveApp.getFileById(id)
var editors = file.getEditors();
if (editors.length > 0) {
  for (var i = 0; i < array.length; i++) {
    Drive.Permissions.insert({'role': 'writer','type': 'user','value': array[i]},id,{'sendNotificationEmails': 'false' });};};
}
function setpermisosreader(id,array){
var file = DriveApp.getFileById(id)
var editors = file.getEditors();
if (editors.length > 0) {
  for (var i = 0; i < array.length; i++) {
    Drive.Permissions.insert({'role': 'reader','type': 'user','value': array[i]},id,{'sendNotificationEmails': 'false' });};};
}
function setownerid(id,user){
Drive.Permissions.insert({'role': 'owner','type': 'user','value': user},id,{'sendNotificationEmails': 'false'})
}
function setpermisoread(id,user){
    Drive.Permissions.insert({'role': 'reader','type': 'user','value': user},id,{'sendNotificationEmails': 'false'})
}
function setpermisowrite(id,user){
    Drive.Permissions.insert({'role': 'writer','type': 'user','value': user},id,{'sendNotificationEmails': 'false' })
}

function permissionstotal(){

  var parentFolderId = "parentFolderId";
  var idfilesheet="idfilesheet";
  var useractive = Session.getActiveUser().getEmail();
  var jefes = ["EMAIL@EMAIL.COM","EMAIL@EMAIL.COM", "EMAIL@EMAIL.COM","EMAIL@EMAIL.COM"]
  var userviewer="EMAIL@EMAIL.COM"
  
  setpermisosreader(parentFolderId,jefes)
  setpermisosreader(idfilesheet,jefes)
  setpermisoread(idfilesheet,useractive)
  removepermission(parentFolderId,useractive)
  setpermisoread(parentFolderId, useractive)
  //setpermisowrite(idfilesheet,userviewer)
  
  //setpermisoread(parentFolderId,userviewer)
}

function addNewRow(array,obj) {

  var admin ="ADMIN"
  var useractive = Session.getActiveUser().getEmail();
  var timestamp = new Date();
  var sheet="DATA"
  var jefes = ["EMAIL@EMAIL.COM","EMAIL@EMAIL.COM", "EMAIL@EMAIL.COM","EMAIL@EMAIL.COM"]
  var userviewer="EMAIL@EMAIL.COM"
  var parentFolderId = "parentFolderId";
  var idfile="idfile"
  var parentFolder = DriveApp.getFolderById(parentFolderId);
  setpermisowrite(parentFolderId,useractive)
  setpermisowrite(idfile,useractive)
  var folderName = "SIP "+array.numsip+"/"+array.rut;
  var foldercreated = parentFolder.getFoldersByName(folderName);
  foldercreated = foldercreated.hasNext() ? foldercreated.next() : parentFolder.createFolder(folderName);
  var idfolder= foldercreated.getId()
  appendrow(idfile,sheet,array.numsip,array.rut,timestamp,useractive,idfolder,array.input,array.ticket)
  setownerid(idfolder,admin)
  setpermisosreader(idfolder,jefes)
  //setpermisoread(idfolder,userviewer)
  
  return obj.map(({fileName, mimeType, data}) => {
  var blob = Utilities.newBlob(Utilities.base64Decode(data), mimeType, fileName);
  var foldercode = foldercreated.createFile(blob).getId();
  var archivo = fileExists(foldercode,idfolder);
  if (archivo==false){
    
    console.log("archivo ya existe")
     
  }
  else{

  setpermisosreader(foldercode,jefes)
  //setpermisoread(foldercode,userviewer)
  setownerid(foldercode,admin)
  removepermission(foldercode,useractive)
  setpermisoread(foldercode,useractive)
  removepermission(idfolder,useractive)
  setpermisoread(idfolder,useractive)
  console.log("archivo creado")

 return foldercode
    
  }
  
  });
  
}

function getsip(sipCode){
 //var sipCode= "123"
  var url ="URL SHEET";
  var ss2= SpreadsheetApp.openByUrl(url);
  var ws2= ss2.getSheetByName("DATA")
  var data2 = ws2.getRange(2, 1, ws2.getLastRow(), 2).getDisplayValues()
  var idList = data2.map(function(r) {return r[0];});
  
  var position = idList.indexOf(sipCode)
  if (position >-1){
    console.log (idList[position])
    return "REPETIDO";
     
  } else{
    console.log ("2")
  return "NOREPETIDO"
    }
}
函数fileExists(idfileexist,folderId){
var consulta=DriveApp.getFileById(idfileexist).getName()
var files=DriveApp.getFilesByName(consulta);
while(files.hasNext()){
var file=files.next();
var folders=file.getParents();
if(folders.hasNext()){
var folder=folders.next();
if(folder.getId()==folderId){
返回true;
}
}
}
返回false;
}
函数removepermission(id,用户){
DriveApp.getFileById(id).removeEditor(用户)
}
函数appendrow(idfile、sheet、numsip、rut、时间戳、用户、idfolder、输入、票证){
var值=电子表格应用程序openById(idfile);
var ss=values.getSheetByName(表);
ss.appendRow([numsip,rut,timestamp,user,idfolder,input,ticket])
}
函数setPermisoWriter(id,数组){
var file=DriveApp.getFileById(id)
var editors=file.getEditors();
如果(editors.length>0){
对于(var i=0;i0){
对于(var i=0;i{
var blob=Utilities.newBlob(Utilities.base64Decode(数据),mimeType,fileName);
var foldercode=foldercreated.createFile(blob.getId();
var archivo=fileExists(foldercode,idfolder);
如果(archivo==false){
console.log(“archivo ya existe”)
}
否则{
setpermisosreader(文件夹代码,jefes)
//SetPermisorRead(foldercode、userviewer)
setownerid(文件夹代码,管理员)
removepermission(foldercode,useractive)
SetPermisorRead(foldercode,useractive)
removepermission(idfolder、useractive)
setpermisoread(idfolder,useractive)
console.log(“archivo creado”)
返回文件夹代码
}
});
}
函数getsip(sipCode){
//var sipCode=“123”
var url=“url表”;
var ss2=SpreadsheetApp.openByUrl(url);
var ws2=ss2.getSheetByName(“数据”)
var data2=ws2.getRange(2,1,ws2.getLastRow(),2).getDisplayValues()
var idList=data2.map(函数(r){返回r[0];});
var位置=idList.indexOf(sipCode)
如果(位置>-1){
console.log(idList[位置])
返回“REPETIDO”;
}否则{
console.log(“2”)
返回“NOREPETIDO”
}
}
这是Javascript代码:

function enviardatosvalidados(){

  var validacion=document.getElementById("sipcode").value

if(validacion=="REPETIDO"){
 
  $('#modal2').modal('hide')
  $('#modalval').modal('show')
  }
else{
  
  try{

enviardatos()
$("#generar").attr("disabled", true)
google.script.run.permissionstotal()
setTimeout(function(){ 
    
  $("#generar").attr("disabled", false)  ; }, 25000)
  window.reloadTheWebApp = function() {
    console.log('reloadTheWebApp ran');

    var linkTag = document.getElementById('testLink');

    linkTag.click();
  }

  }  catch(error){
    alert("Hubo un error.")
    alert(error)

  }
  
}

}
  function enviardatos(){
     if(validate()){

  var sip = document.getElementById("numsip")
  var rut = document.getElementById("rut")
  var input = document.getElementById("input") 
  var ticket = document.getElementById("ticket") 
  var array ={numsip: sip.value,rut: rut.value, input:input.value,ticket:ticket.value}
  const f = document.getElementById('files');

Promise.all([...f.files].map((file, i) => {
  const fr = new FileReader();
  return new Promise((r, rj) => {
    fr.onload = (e) => {
      const data = e.target.result.split(",");
      r({fileName: f.files[i].name, mimeType: data[0].match(/:(\w.+);/)[1], data: data[1]});
    }
    fr.onerror = (e) => rj(e);
    fr.readAsDataURL(file);
  });
}))
.then(obj => google.script.run.withSuccessHandler(console.log).addNewRow(array, obj))
.catch(err => alert(err));
$('#modal2').modal('hide')

successnotification2()
  setTimeout(function(){ 
    
    $(':input').val('');
    
    $("#modalcarpeta").modal('show'); }, 25000);
    ;
  
  }
  else{
    $('#modal2').modal('hide')
    
  }
  }

  function validate(){
  var fieldsToValidate = document.querySelectorAll("#userform input, #userform select");
  Array.prototype.forEach.call(fieldsToValidate, function(el){
  if(el.checkValidity()){
  el.classList.remove("is-invalid");
  
  }else{
  el.classList.add("is-invalid");
     
  }
       
  });
  
  return Array.prototype.every.call(fieldsToValidate, function(el){
  return el.checkValidity();
    
  });
      
   } 

  function checkRut(rut) {
    // Despejar Puntos
    var valor = rut.value.replace('.','');
    // Despejar Guión
    valor = valor.replace('-','');
    
    // Aislar Cuerpo y Dígito Verificador
    cuerpo = valor.slice(0,-1);
    dv = valor.slice(-1).toUpperCase();
    
    // Formatear RUN
    rut.value = cuerpo + '-'+ dv
    
    // Si no cumple con el mínimo ej. (n.nnn.nnn)
    if(cuerpo.length < 7) { rut.setCustomValidity("RUT Incompleto"); return false;}
    
    // Calcular Dígito Verificador
    suma = 0;
    multiplo = 2;
    
    // Para cada dígito del Cuerpo
    for(i=1;i<=cuerpo.length;i++) {
    
        // Obtener su Producto con el Múltiplo Correspondiente
        index = multiplo * valor.charAt(cuerpo.length - i);
        
        // Sumar al Contador General
        suma = suma + index;
        
        // Consolidar Múltiplo dentro del rango [2,7]
        if(multiplo < 7) { multiplo = multiplo + 1; } else { multiplo = 2; }
  
    }
    
    // Calcular Dígito Verificador en base al Módulo 11
    dvEsperado = 11 - (suma % 11);
    
    // Casos Especiales (0 y K)
    dv = (dv == 'K')?10:dv;
    dv = (dv == 0)?11:dv;
    
    // Validar DV
    if(dvEsperado != dv) { rut.setCustomValidity("RUT Inválido"); return false; }
    
    // Validación
    rut.setCustomValidity('');
}
function successnotification2(){
  
  document.getElementById("save-success2").classList.remove("invisible");
  setTimeout(function(){
    document.getElementById("save-success2").classList.add("invisible")  
    },25000);
       }

  function getSip(){
   
    var sipCode = document.getElementById("numsip").value;
   
   google.script.run.withSuccessHandler(updatesipcode).getsip(sipCode);
    
   }
   
   function updatesipcode(sipCode){
   document.getElementById("sipcode").value = sipCode;
   
   
   }

document.getElementById("numsip").addEventListener("input",getSip)
函数envirardatosvalidados(){
var validacion=document.getElementById(“sipcode”).value
如果(有效离子==“REPETIDO”){
$('#modal2').modal('hide'))
$('#modalval').modal('show'))
}
否则{
试一试{
环境()
$(“#generar”).attr(“已禁用”,真)
google.script.run.permissionstotal()
setTimeout(函数(){
$(“generar”).attr(“disabled”,false);},25000)
window.reloadTheWebApp=函数(){
log('reloadthewebapprun');
var linkTag=document.getElementById('testLink');
linkTag.click();
}
}捕获(错误){
警报(“Hubo un错误”)
警报(错误)
}
}
}
函数envirardatos(){
if(validate()){
var sip=document.getElementById(“numsip”)
var rut=document.getElementById(“rut”)
var input=document.getElementById(“输入”)
var票证=document.getElementById(“票证”)
var数组={numsip:sip.value,rut:rut.value,input:input.value,ticket:ticket.value}
常量f=document.getElemen
function moveFiles(sourceFileId, targetFolderId) {
  var file = DriveApp.getFileById(sourceFileId);
  file.getParents().next().removeFile(file);
  DriveApp.getFolderById(targetFolderId).addFile(file);
}

function fileExists(idfileexist,folderId) {
var consulta = DriveApp.getFileById(idfileexist).getName()
  var files = DriveApp.getFilesByName(consulta);
  while (files.hasNext()) {
    var file = files.next();
    var folders = file.getParents();
    if (folders.hasNext()) {
      var folder = folders.next();
      if (folder.getId() == folderId) {
        return true;
      }
    }
  }
  
  return false;
}

function removepermission(id, user){
DriveApp.getFileById(id).removeEditor(user)
}
function appendrow(idfile,sheet,numsip,rut,timestamp,user,idfolder,exedoc,ticket){

var values = SpreadsheetApp.openById(idfile);
var ss= values.getSheetByName(sheet);
ss.appendRow([numsip,rut,timestamp,user,idfolder,exedoc,ticket])
}
function setpermisoswriter(id,array){

var file = DriveApp.getFileById(id)
var editors = file.getEditors();
if (editors.length > 0) {
  for (var i = 0; i < array.length; i++) {
    Drive.Permissions.insert({'role': 'writer','type': 'user','value': array[i]},id,{'sendNotificationEmails': 'false' });};};
}
function setpermisosreader(id,array){
var file = DriveApp.getFileById(id)
var editors = file.getEditors();
if (editors.length > 0) {
  for (var i = 0; i < array.length; i++) {
    Drive.Permissions.insert({'role': 'reader','type': 'user','value': array[i]},id,{'sendNotificationEmails': 'false' });};};
}
function setownerid(id,user){
Drive.Permissions.insert({'role': 'owner','type': 'user','value': user},id,{'sendNotificationEmails': 'false'})
}
function setpermisoread(id,user){
    Drive.Permissions.insert({'role': 'reader','type': 'user','value': user},id,{'sendNotificationEmails': 'false'})
}
function setpermisowrite(id,user){
    Drive.Permissions.insert({'role': 'writer','type': 'user','value': user},id,{'sendNotificationEmails': 'false' })
}

function addNewRow(array,obj) {
  var admin ="ADMIN"
  var useractive = Session.getActiveUser().getEmail();
  var timestamp = new Date();
  var sheet="DATA"
  var parentFolderIdorigen ="PARENT FOLDER"
  var idfile="IDSHEET"
  var parentFolderorigen = DriveApp.getFolderById(parentFolderIdorigen)
  var parentFolderIddestino = "ID"
  setpermisowrite(idfile,useractive)
  var folderName = "SIP "+array.numsip+"/"+array.rut;
  var foldercreated = parentFolderorigen.getFoldersByName(folderName);
  foldercreated = foldercreated.hasNext() ? foldercreated.next() : parentFolderorigen.createFolder(folderName);
  var idfolder= foldercreated.getId()
  appendrow(idfile,sheet,array.numsip,array.rut,timestamp,useractive,idfolder,array.input,array.ticket)
  setownerid(idfolder,admin)
  return obj.map(({fileName, mimeType, data}) => {
  var blob = Utilities.newBlob(Utilities.base64Decode(data), mimeType, fileName);
  var foldercode = foldercreated.createFile(blob).getId();
  var archivo = fileExists(foldercode,idfolder);
  if (archivo==false){
      
    console.log("archivo ya existe")
     
  }
  else{
    setownerid(foldercode,admin)
    
  moveFiles(idfolder,parentFolderIddestino)
  moveFiles(foldercode,idfolder)
  console.log("archivo creado")
 return foldercode
    
  }
  
  });
  
}

function getsip(sipCode){
 
  var url ="URLSHEET";
  var ss2= SpreadsheetApp.openByUrl(url);
  var ws2= ss2.getSheetByName("DATA")
  var data2 = ws2.getRange(2, 1, ws2.getLastRow(), 2).getDisplayValues()
  var idList = data2.map(function(r) {return r[0];});
  
  var position = idList.indexOf(sipCode)
  if (position >-1){
    console.log (idList[position])
    return "REPETIDO";
     
  } else{
    console.log ("2")
  return "NOREPETIDO"
    }
}