首页 > 解决方案 > 您无权访问此文档 Appscript

问题描述

为什么我有一个错误:您没有访问此文档的权限。当我使用“try{}catch(error){}”时?有异常的部分正确完成

const ssID = SpreadsheetApp.getActive().getId();
function onOpen() {
  SpreadsheetApp.getUi()
  .createMenu('Premia')
  .addItem('Send information', 'sendInfo')
  .addToUi();
   
}
   
function sendInfo() {
try {
PREMIA.importDane(ssID);
}
catch (error) {
  var ui =SpreadsheetApp.getUi()
  ui.alert("Error");
}
  
}

这是我的图书馆代码 PREMIA,这是我的图书馆代码 PREMIA,这是我的图书馆代码 PREMIA,这是我的图书馆代码 PREMIA,这是我的图书馆代码 PREMIA,这是我的图书馆代码 PREMIA,这是我的图书馆代码 PREMIA,这里这是我的图书馆代码 PREMIA,这是我的图书馆代码 PREMIA,这是我的图书馆代码 PREMIA,这是我的图书馆代码 PREMIA,这是我的图书馆代码 PREMIA,

function importDane(ssID) {

  
   const baza = SpreadsheetApp.openById('ID OF MY DATABASE SPREADSHEET');
   const bazaBaza = baza.getSheetByName('Baza');
   const bazaSlownik = baza.getSheetByName('Słownik');
   const bazaSlownikDane = bazaSlownik.getDataRange().getValues();
   //const bazaDostep = baza.getSheetByName("Dostęp").getDataRange().getValues();

  var ss=SpreadsheetApp.openById(ssID);
  var sheet = ss.getSheetByName("Premie");
  var dane = sheet.getDataRange().getValues();
    


  var licznik =0;

  for (var i=2; i<dane.length;i++) {
    if (dane [i][6]=="Wyślij") {

      licznik++;
      var przelozony = dane[0][1];
      var miesiac = dane[i][0];
      var nazwisko = dane[i][1];
      var imie = dane[i][2];
      var pesel = dane[i][3];
      var biuro = dane[i][4];
      var premia = dane[i][5];


      if (miesiac=="Styczeń") {
        for (let a =0;a<bazaSlownikDane.length;a++) {
          if (bazaSlownikDane[a][1]==pesel){
            var wyplata=bazaSlownikDane[a][2];
            var odroczono=(wyplata*0.06);
            var dowyplaty = (premia-odroczono);
            if(dowyplaty<0) {
              dowyplaty=0;
              odroczono=premia;
          }
        }
      }
     } else if (miesiac=="Luty") {
        for (let a =0;a<bazaSlownikDane.length;a++) {
          if (bazaSlownikDane[a][1]==pesel){
            var wyplata=bazaSlownikDane[a][3];
            var odroczono=(wyplata*0.06);
            var dowyplaty = (premia-odroczono);
            if(dowyplaty<0) {
              dowyplaty=0;
              odroczono=premia;
          }
          
        }
      }

     } else if (miesiac=="Marzec") {
        for (let a =0;a<bazaSlownikDane.length;a++) {
          if (bazaSlownikDane[a][1]==pesel){
           var wyplata=bazaSlownikDane[a][4];
            var odroczono=(wyplata*0.06);
            var dowyplaty = (premia-odroczono);
            if(dowyplaty<0) {
              dowyplaty=0;
              odroczono=premia;
          }
          
        }
      }

      } else if (miesiac=="Kwiecień") {
          for (let a =0;a<bazaSlownikDane.length;a++) {
            if (bazaSlownikDane[a][1]==pesel){
              var wyplata=bazaSlownikDane[a][5];
              var odroczono=(wyplata*0.06);
              var dowyplaty = (premia-odroczono);
              if(dowyplaty<0) {
                dowyplaty=0;
                odroczono=premia;
          }
          
        }
      }

      } else if (miesiac=="Maj") {
          for (let a =0;a<bazaSlownikDane.length;a++) {
            if (bazaSlownikDane[a][1]==pesel){
              var wyplata=bazaSlownikDane[a][6];
              var odroczono=(wyplata*0.06);
              var dowyplaty = (premia-odroczono);
                if(dowyplaty<0) {
                  dowyplaty=0;
                  odroczono=premia;
          }
          
        }
      }

      } else if (miesiac=="Czerwiec") {
          for (let a =0;a<bazaSlownikDane.length;a++) {
            if (bazaSlownikDane[a][1]==pesel){
              var wyplata=bazaSlownikDane[a][7];
              var odroczono=(wyplata*0.06);
              var dowyplaty = (premia-odroczono);
              if(dowyplaty<0) {
                dowyplaty=0;
                odroczono=premia;
          }
          
        }
      }

      } else if (miesiac=="Lipiec") {
          for (let a =0;a<bazaSlownikDane.length;a++) {
            if (bazaSlownikDane[a][1]==pesel){
              var wyplata=bazaSlownikDane[a][8];
              var odroczono=(wyplata*0.06);
              var dowyplaty = (premia-odroczono);
                if(dowyplaty<0) {
                  dowyplaty=0;
                  odroczono=premia;
          }
          
        }
      }

      } else if (miesiac=="Sierpień") {
          for (let a =0;a<bazaSlownikDane.length;a++) {
            if (bazaSlownikDane[a][1]==pesel){
              var wyplata=bazaSlownikDane[a][9];
              var odroczono=(wyplata*0.06);
              var dowyplaty = (premia-odroczono);
              if(dowyplaty<0) {
                dowyplaty=0;
                odroczono=premia;
          }
          
        }
      }

      } else if (miesiac=="Wrzesień") {
          for (let a =0;a<bazaSlownikDane.length;a++) {
            if (bazaSlownikDane[a][1]==pesel){
              var wyplata=bazaSlownikDane[a][10];
              var odroczono=(wyplata*0.06);
              var dowyplaty = (premia-odroczono);
              if(dowyplaty<0) {
                dowyplaty=0;
                odroczono=premia;
          }
          
        }
      }

      } else if (miesiac=="Październik") {
          for (let a =0;a<bazaSlownikDane.length;a++) {
            if (bazaSlownikDane[a][1]==pesel){
              var wyplata=bazaSlownikDane[a][11];
              var odroczono=(wyplata*0.06);
              var dowyplaty = (premia-odroczono);
              if(dowyplaty<0) {
                dowyplaty=0;
                odroczono=premia;
          }
          
        }
      }

      } else if (miesiac=="Litopad") {
          for (let a =0;a<bazaSlownikDane.length;a++) {
            if (bazaSlownikDane[a][1]==pesel){
              var wyplata=bazaSlownikDane[a][12];
              var odroczono=(wyplata*0.06);
              var dowyplaty = (premia-odroczono);
              if(dowyplaty<0) {
                dowyplaty=0;
                odroczono=premia;
          }
          
        }
      }

      } else if (miesiac=="Grudzień") {
          for (let a =0;a<bazaSlownikDane.length;a++) {
            if (bazaSlownikDane[a][1]==pesel){
              var wyplata=bazaSlownikDane[a][13];
              var odroczono=(wyplata*0.06);
              var dowyplaty = (premia-odroczono);
              if(dowyplaty<0) {
                dowyplaty=0;
                odroczono=premia;
          }
          
        }
      }

        } 

        var status = "Nowe zgłoszenie";
        var wynik = [[miesiac,nazwisko,imie,biuro,pesel,przelozony,premia,wyplata,dowyplaty,odroczono,status]];
        var wynikZespol = [["Wysłano",dowyplaty,odroczono]];

        Logger.log("wynik: "+wynik);
        Logger.log("wynik zespołu: "+wynikZespol);

        var freeRow = bazaBaza.getLastRow()+1;
        bazaBaza.getRange(freeRow,1,1,11).setValues(wynik); //wstawianie wartości do arkusza Baza
        sheet.getRange(i+1,7,1,3).setValues(wynikZespol);   //wstawianie wartości do arkusza Premie, poszczególnych zespołów    


    }

  }
   

  var ui = SpreadsheetApp.getUi();
    if (licznik==0) {
      ui.alert('Brak informacji do wysyłki odnośnie wysokości premii');
    } else {
      ui.alert("Raport został wysłany w ilości: "+licznik+" sztuk");

    }
   
    
 
}

标签: google-apps-script

解决方案


这可能是一个错误:

即使方法包含在try...catch中,与方法openByIdopenByUrl对应的错误消息也会显示在日志中。

在问题跟踪器中报告:

这之前已在问题跟踪器中报告过:

任何受此影响的人,请考虑通过加注星标来订阅此问题,以便跟踪它并帮助确定它的优先级。

更多细节:

请注意,这里是否使用库无关紧要,因为即使未在主代码中直接调用此方法,这也是可重现的:

function myFunction() {
  try {
    SpreadsheetApp.openById("SS_ID");
  } catch(err) {
    console.log("ERROR");
  }
}

在这两种情况下,代码都成功进入并执行了该catch块,但最后记录了错误消息,并且 Execution 的状态设置为Failed

在此处输入图像描述

另请注意,类似DocumentApp.openById的方法不会显示此行为。


推荐阅读