Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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
Google apps script 检索数据避免google配额_Google Apps Script_Google Sheets Api_Quota - Fatal编程技术网

Google apps script 检索数据避免google配额

Google apps script 检索数据避免google配额,google-apps-script,google-sheets-api,quota,Google Apps Script,Google Sheets Api,Quota,我需要调查60个表格,并从每个电子表格中的几个单元格中获取信息。我创建了一个谷歌应用程序脚本,就是这样做的。起初,我想用相同的脚本将所有单元格(大约300个)写入另一个谷歌电子表格,然而,配额每天只允许写入50个条目。有没有办法获取所有存储的数据?也许下载它作为一个CSV?否则呢?或者有没有一种方法可以一次性将所有单元格写入电子表格,从而避免“50个条目”的限制 谢谢大家! 附加 (我知道代码很忙,算法效率也不高——我试图掌握它的诀窍。看看它是如何工作的。) 函数findFolder(){ v

我需要调查60个表格,并从每个电子表格中的几个单元格中获取信息。我创建了一个谷歌应用程序脚本,就是这样做的。起初,我想用相同的脚本将所有单元格(大约300个)写入另一个谷歌电子表格,然而,配额每天只允许写入50个条目。有没有办法获取所有存储的数据?也许下载它作为一个CSV?否则呢?或者有没有一种方法可以一次性将所有单元格写入电子表格,从而避免“50个条目”的限制

谢谢大家!

附加 (我知道代码很忙,算法效率也不高——我试图掌握它的诀窍。看看它是如何工作的。)


函数findFolder(){
var行=3;
var-dApp=DriveApp;
var folderIter=dApp.getFoldersByName(“П,6”);
var folder=folderIter.next();
var filesIter=folder.getFiles();
而(filesIter.hasNext()){
var file=filesIter.next();
var fileID=file.getId();
var fileName=file.getName();
Logger.log(“文件:”+文件);
values=Sheets.Spreadsheets.values.get(fileID,ЖЖЖааааа!F2:P5');
var值可调整=[];
//0:标题,1:小组,2:老师,3:地点,4:房间,5:时间表
valuesReadable[0]=values.values[0][1];
valuesReadable[1]=values.values[1][1];
valuesReadable[2]=values.values[2][1];
valuesReadable[3]=values.values[0][9];
valuesReadable[4]=values.values[0][10];
valuesReadable[5]=values.values[1][9];
Logger.log(值可修改[0]);
Logger.log(值可修改[1]);
Logger.log(值可修改[2]);
Logger.log(值可修改[3]);
Logger.log(值可修改[4]);
Logger.log(值可修改[5]);
var标题=[];
标题[0]=“азаааааааааааа1072;
标题[1]=“敻敻敻敻敻”;
标题[2]=“Фаа”
标题[3]=“ааМ,ааб”
标题[4]=“аааааааааааа1072;
标题[5]=“ааа,аааааа”
var checkResult=[];
//0:标题,1:小组,2:老师,3:地点,4:房间,5:时间表
检查结果[0]=“БПС01”;
检查结果[1]=“1”;
检查结果[2]=“Фаа”
检查结果[3]=“ааМ,аб”
检查结果[4]='';
检查结果[5]=“аааа,ааааа”
var sheet1CheckResult=[];
var a=0;
while(a<6){
if(valuesReadable[a]==checkResult[a])
{
Logger.log(“标题[a]+”标题);
表1检查结果[a]=“a”;
}
否则{
Logger.log(标题[a]+“Logger.log”);
表1检查结果[a]=“a”;
}
a++;
}
变量数据=[[fileName]];
var valueRange=Sheets.newValueRange();
valueRange.values=数据;
变量单元格='A'+行;
var result=Sheets.Spreadsheets.Values.update(值范围'someReference',单元格{
valueInputOption:“原始”});
var数据=[[sheet1CheckResult[0]];
var valueRange=Sheets.newValueRange();
Logger.log(“数据:”+数据);
valueRange.values=数据;
Logger.log(“valueRange:+valueRange.values”);
变量单元格='D'+行;
var result=Sheets.Spreadsheets.Values.update(值范围'someReference',单元格{
valueInputOption:“原始”});
var数据=[[sheet1CheckResult[1]]];
var valueRange=Sheets.newValueRange();
valueRange.values=数据;
变量单元格='E'+行;
var result=Sheets.Spreadsheets.Values.update(值范围'someReference',单元格{
valueInputOption:“原始”});
var数据=[[sheet1CheckResult[2]];
var valueRange=Sheets.newValueRange();
valueRange.values=数据;
变量单元格='F'+行;
var result=Sheets.Spreadsheets.Values.update(值范围'someReference',单元格{
valueInputOption:“原始”});
var数据=[[sheet1CheckResult[3]];
var valueRange=Sheets.newValueRange();
valueRange.values=数据;
变量单元格='G'+行;
var result=Sheets.Spreadsheets.Values.update(值范围'someReference',单元格{
valueInputOption:“原始”});
var数据=[[sheet1CheckResult[4]];
var valueRange=Sheets.newValueRange();
valueRange.values=数据;
变量单元格='H'+行;
var result=Sheets.Spreadsheets.Values.update(值范围'someReference',单元格{
valueInputOption:“原始”});
var数据=[[sheet1CheckResult[5]];
var valueRange=Sheets.newValueRange();
valueRange.values=数据;
变量单元格='I'+行;
var result=Sheets.Spreadsheets.Values.update(值范围'someReference',单元格{
valueInputOption:“原始”});
行++;
}
} 

您可以将所有数据存储在一个数组中,并使用Range类的一个方法<;code>setValues()一次性写入所有数组。我怀疑每天写50篇文章的配额。我知道我在一天内做的不止这些。有点可疑。也许您可以分享实际错误消息的文本或对该信息的引用。这就是我得到的。“对sheets.spreadsheets.values.update的API调用失败,错误为:配额组'WriteGroup'超过配额,消费者'project_number:495790693024'的'sheets.googleapis.com'服务'sheets.googleapis.com'的'Write requests per user per 100 seconds'超过配额。(第114行,文件“Code”)”我在您使用应用程序脚本时上传了上述代码,尝试使用而不是Sheets API。我不确定这是否算是一个答案。然而,如果有人面临同样的问题。我在同一个代码中实现了这两个想法(首先使用sheetApp将信息存储在一个数组中),并且成功了。我制作了一个脚本,它浏览了200个电子表格,并制作了一个包含900个条目的汇总表。成功了。

function findFolder() {
  var row = 3;

  var dApp = DriveApp;
  var folderIter = dApp.getFoldersByName ("П.,6");
  var folder = folderIter.next();  
  var filesIter = folder.getFiles();


  while (filesIter.hasNext()) { 

  var file = filesIter.next();
  var fileID = file.getId();
  var fileName = file.getName();

  Logger.log("file:" + file);

  values = Sheets.Spreadsheets.Values.get (fileID,'Журнал!F2:P5');     

  var valuesReadable = [];
  //0:title, 1:group, 2:teacher, 3:place, 4:room, 5:timetable

  valuesReadable [0] = values.values [0][1];
  valuesReadable [1] = values.values [1][1];
  valuesReadable [2] = values.values [2][1];
  valuesReadable [3] = values.values [0][9];
  valuesReadable [4] = values.values [0][10];
  valuesReadable [5] = values.values [1][9];



  Logger.log (valuesReadable [0]);
  Logger.log (valuesReadable [1]);
  Logger.log (valuesReadable [2]);
  Logger.log (valuesReadable [3]);
  Logger.log (valuesReadable [4]);
  Logger.log (valuesReadable [5]);

  var titles = [];

  titles [0] = "название группы";
  titles [1] = "курс";
  titles [2] = "ФИО"
  titles [3] = "дом, каб"
  titles [4] = 'кабинет';
  titles [5] = "день, время"

  var checkResult = [];
  //0:title, 1:group, 2:teacher, 3:place, 4:room, 5:timetable

  checkResult [0] = "Курс 01";
  checkResult [1] = "1";
  checkResult [2] = "ФИО"
  checkResult [3] = "дом, каб"
  checkResult [4] = '';
  checkResult [5] = "день, время"


  var sheet1CheckResult = [];


  var a = 0;
  while (a < 6) {
     if (valuesReadable [a] == checkResult [a]) 

     {
       Logger.log ("поле: " + titles [a] + " не заполнено");
       sheet1CheckResult [a] = "не заполнено";
     }

    else {
      Logger.log ("поле: " + titles [a] + " заполнено");
      sheet1CheckResult [a] = "заполнено";
    }

  a++;
  }


  var data = [[fileName]]; 
  var valueRange = Sheets.newValueRange();
  valueRange.values = data;
  var cell = 'A' + row;
  var result = Sheets.Spreadsheets.Values.update(valueRange, 'someReference',cell,{
       valueInputOption: 'RAW'});


  var data =  [[sheet1CheckResult[0]]]; 
  var valueRange = Sheets.newValueRange();
  Logger.log ("data: " + data);
  valueRange.values = data;
  Logger.log ("valueRange: " + valueRange.values);
  var cell = 'D' + row;
  var result = Sheets.Spreadsheets.Values.update(valueRange, 'someReference',cell,{
       valueInputOption: 'RAW'});


  var data = [[sheet1CheckResult[1]]]; 
  var valueRange = Sheets.newValueRange();
  valueRange.values = data;
  var cell = 'E' + row;
  var result = Sheets.Spreadsheets.Values.update(valueRange, 'someReference',cell,{
       valueInputOption: 'RAW'});


  var data = [[sheet1CheckResult[2]]]; 
  var valueRange = Sheets.newValueRange();
  valueRange.values = data;
  var cell = 'F' + row;
  var result = Sheets.Spreadsheets.Values.update(valueRange, 'someReference',cell,{
       valueInputOption: 'RAW'});


  var data = [[sheet1CheckResult[3]]]; 
  var valueRange = Sheets.newValueRange();
  valueRange.values = data;
  var cell = 'G' + row;
  var result = Sheets.Spreadsheets.Values.update(valueRange, 'someReference',cell,{
       valueInputOption: 'RAW'});


  var data = [[sheet1CheckResult[4]]]; 
  var valueRange = Sheets.newValueRange();
  valueRange.values = data;
  var cell = 'H' + row;
  var result = Sheets.Spreadsheets.Values.update(valueRange, 'someReference',cell,{
       valueInputOption: 'RAW'});

  var data = [[sheet1CheckResult[5]]]; 
  var valueRange = Sheets.newValueRange();
  valueRange.values = data;
  var cell = 'I' + row;
  var result = Sheets.Spreadsheets.Values.update(valueRange, 'someReference',cell,{
       valueInputOption: 'RAW'});

  row ++;  
  }
}