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 Sheet中,在单元格的值中添加1,并将结果保存为Google Drive中的PDF,再次添加1,然后再次保存PDF,_Google Apps Script - Fatal编程技术网

Google apps script 在Google Sheet中,在单元格的值中添加1,并将结果保存为Google Drive中的PDF,再次添加1,然后再次保存PDF,

Google apps script 在Google Sheet中,在单元格的值中添加1,并将结果保存为Google Drive中的PDF,再次添加1,然后再次保存PDF,,google-apps-script,Google Apps Script,首先,我不是一个程序员,所以这对你们中的一些人来说可能是一个简单的问题 我正在用谷歌制作一张小学儿童评分表。我制作了这样的电子表格,如果你在单元格H3中输入一个学生的班级号,该学生的成绩就会出现在表格上。到目前为止还不错 现在我要做的是,编写一个脚本,将单元格H3的值加1,然后将PDF保存在教师的Google驱动器中 现在,我有一个从网上复制粘贴的“脚本”。。。我发现我需要在PDF中隐藏所有我不想要的表格。(这就是“ShowOneSheet”和“ShowAllSheets”函数的作用。) 可能代

首先,我不是一个程序员,所以这对你们中的一些人来说可能是一个简单的问题

我正在用谷歌制作一张小学儿童评分表。我制作了这样的电子表格,如果你在单元格H3中输入一个学生的班级号,该学生的成绩就会出现在表格上。到目前为止还不错

现在我要做的是,编写一个脚本,将单元格H3的值加1,然后将PDF保存在教师的Google驱动器中

现在,我有一个从网上复制粘贴的“脚本”。。。我发现我需要在PDF中隐藏所有我不想要的表格。(这就是“ShowOneSheet”和“ShowAllSheets”函数的作用。)

可能代码效率很低,我不知道。:)

现在,我有一个菜单,您可以在其中手动执行所有操作。(转到下一个学生,以pdf格式保存到驱动器,转到下一个学生,以pdf格式保存到驱动器,…)

我希望脚本能够在有学生的情况下多次这样做。这样,教师只需单击一下,就可以在谷歌硬盘上为所有学生生成报告。

我也不知道如何创建具有指定名称的文件夹/pdf。(目前,它将文件夹和pdf都保存为“未定义”。

任何帮助都将不胜感激!我是个哑巴,但渴望学习

function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Reports')
  .addItem('Show only grades sheet', 'showOneSheet')
  .addItem('Go to next report', 'nextclassnr')
  .addItem('Save this report in PDF in Drive', 'createPdf')
  .addItem('Show all sheets', 'showAllSheets')
  .addToUi();
}
function showOneSheet(SheetToShow) {
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
for(var i in sheets){
if (sheets[i].getName()==SheetToShow){
  sheets[i].showSheet();
}
else {
  sheets[i].hideSheet();
}
}
}




function nextclassnr() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getSheets()[3];
//Set variables and add one to the "classnumber"
var classnrR= sheet.getRange("H3");

var classnr = classnrR.getValue();
var nextclassnr = 1 + classnr;

classnrR.setValue(nextclassnr);


}



 //PDF in folder "undefined" named "undefined" :(

  function createPdf(saveToFolder, fileName){

 var ssa = SpreadsheetApp.getActiveSpreadsheet();
 var pdf = ssa.getAs("application/pdf"); 
 try {
  var folder = DocsList.getFolder(saveToFolder);
 }
 //Create Folder if not exists
  catch(error){
  folder = DocsList.createFolder(saveToFolder);
  }
 var file = folder.createFile(pdf);
 file.rename(fileName);

 return file;
 }


// make sheets visible

function showAllSheets() {
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
for(var i in sheets){
  sheets[i].showSheet();
 }
}

我对你的代码做了一点修改,我想这就是你想要它做的,而没有做“像有学生一样多次运行它”。如果你能再解释一点,或者我已经告诉你,你可以更新来显示你的情况,这也有这个脚本附加

// Define your names here

var FOLDER_NAME = 'PDFPlus1';
var FILE_NAME = FOLDER_NAME + ' - Student Grades - Class ';

// Event handlers
// --------------

function onOpen() {

  var ui = SpreadsheetApp.getUi();

  ui.createMenu('Reports')
    .addItem('Show only grades sheet', 'showGradesSheet')
    .addItem('Go to next report', 'nextClassNumber')
    .addItem('Save this report in PDF in Drive', 'createPdf')
    .addItem('Show all sheets', 'showAllSheets')
    .addItem('Create a report for each student', 'processAllStudents')        
    .addToUi();
}

function showGradesSheet() {

  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();

  // Grades sheet (?)
  var SheetToShow = sheets[3];

  for (var i = 0; i < sheets.length; i++) {

    if (sheets[i] === SheetToShow) {

      sheets[i].showSheet(); 

    } else {

      sheets[i].hideSheet();
    }
  }
}

function nextClassNumber() {

  var classNumberRange = getClassNumberRange_();
  var classNumber = classNumberRange.getValue();
  classNumber++;
  classNumberRange.setValue(classNumber);
}

function createPdf(){

  // saveToFolder, fileName  

  var ssa = SpreadsheetApp.getActiveSpreadsheet();
  var pdf = ssa.getAs("application/pdf"); 
  var folders;
  var nextFolder;
  var foundFolder = false;
  var classNumber = getClassNumberRange_().getValue();

  // DocList is deprecated
  folders = DriveApp.getFoldersByName(FOLDER_NAME);

  // See if we already have the folder
  while (folders.hasNext()) {

    if (!foundFolder) {

      folders.next().createFile(pdf).setName(FILE_NAME + classNumber);
      foundFolder = true;  

    } else {

      throw new Error('multiple folders named ' + FOLDER_NAME);
    }  
  }

  if (!foundFolder) {

    // No folder already so create it
    DriveApp
      .createFolder(FOLDER_NAME)
      .createFile(pdf)
      .setName(FILE_NAME + classNumber);
  }
}

// Make sheets visible

function showAllSheets() {

  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();

  for (var i = 0; i < sheets.length; i++) {

    sheets[i].showSheet();
  }
}

function processAllStudents() {

  // Could easily call the other event handlers to automate the 
  // PDF creation, just need to call createPDF() with a student ID number
  // rather than pulling it from the sheet

  // for all students {
  //   createPDF(studentIdNumber);
  // }

}    

// Local functions
// ---------------

function getClassNumberRange_() {

  return classNumberRange = SpreadsheetApp
    .getActiveSpreadsheet()
    .getSheets()[3]
    .getRange("H3");
}
//在此处定义您的姓名
var FOLDER_NAME='PDFPlus1';
var FILE_NAME=文件夹_NAME+'-学生成绩-班级';
//事件处理程序
// --------------
函数onOpen(){
var ui=SpreadsheetApp.getUi();
ui.createMenu(“报告”)
.addItem('仅显示成绩表','显示成绩表')
.addItem('转到下一个报告','下一个分类编号')
.addItem('将此报告以PDF格式保存在驱动器中','创建PDF')
.addItem('显示所有工作表','显示所有工作表')
.addItem('为每个学生创建报告','处理所有学生')
.addToUi();
}
函数showGradesSheet(){
var sheets=SpreadsheetApp.getActiveSpreadsheet().getSheets();
//成绩表(?)
var SheetToShow=板材[3];
对于(变量i=0;i
我对你的代码做了一些修改,这就是我认为你想要它做的,而没有做“像学生一样多次运行”。如果你能再解释一点,或者我已经告诉你,你可以更新来显示你的情况,这也有这个脚本附加

// Define your names here

var FOLDER_NAME = 'PDFPlus1';
var FILE_NAME = FOLDER_NAME + ' - Student Grades - Class ';

// Event handlers
// --------------

function onOpen() {

  var ui = SpreadsheetApp.getUi();

  ui.createMenu('Reports')
    .addItem('Show only grades sheet', 'showGradesSheet')
    .addItem('Go to next report', 'nextClassNumber')
    .addItem('Save this report in PDF in Drive', 'createPdf')
    .addItem('Show all sheets', 'showAllSheets')
    .addItem('Create a report for each student', 'processAllStudents')        
    .addToUi();
}

function showGradesSheet() {

  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();

  // Grades sheet (?)
  var SheetToShow = sheets[3];

  for (var i = 0; i < sheets.length; i++) {

    if (sheets[i] === SheetToShow) {

      sheets[i].showSheet(); 

    } else {

      sheets[i].hideSheet();
    }
  }
}

function nextClassNumber() {

  var classNumberRange = getClassNumberRange_();
  var classNumber = classNumberRange.getValue();
  classNumber++;
  classNumberRange.setValue(classNumber);
}

function createPdf(){

  // saveToFolder, fileName  

  var ssa = SpreadsheetApp.getActiveSpreadsheet();
  var pdf = ssa.getAs("application/pdf"); 
  var folders;
  var nextFolder;
  var foundFolder = false;
  var classNumber = getClassNumberRange_().getValue();

  // DocList is deprecated
  folders = DriveApp.getFoldersByName(FOLDER_NAME);

  // See if we already have the folder
  while (folders.hasNext()) {

    if (!foundFolder) {

      folders.next().createFile(pdf).setName(FILE_NAME + classNumber);
      foundFolder = true;  

    } else {

      throw new Error('multiple folders named ' + FOLDER_NAME);
    }  
  }

  if (!foundFolder) {

    // No folder already so create it
    DriveApp
      .createFolder(FOLDER_NAME)
      .createFile(pdf)
      .setName(FILE_NAME + classNumber);
  }
}

// Make sheets visible

function showAllSheets() {

  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();

  for (var i = 0; i < sheets.length; i++) {

    sheets[i].showSheet();
  }
}

function processAllStudents() {

  // Could easily call the other event handlers to automate the 
  // PDF creation, just need to call createPDF() with a student ID number
  // rather than pulling it from the sheet

  // for all students {
  //   createPDF(studentIdNumber);
  // }

}    

// Local functions
// ---------------

function getClassNumberRange_() {

  return classNumberRange = SpreadsheetApp
    .getActiveSpreadsheet()
    .getSheets()[3]
    .getRange("H3");
}
//在此处定义您的姓名
var FOLDER_NAME='PDFPlus1';
var FILE_NAME=文件夹_NAME+'-学生成绩-班级';
//事件处理程序
// --------------
函数onOpen(){
var ui=SpreadsheetApp.getUi();
ui.createMenu(“报告”)
.addItem('仅显示成绩表','显示成绩表')
.addItem('转到下一个报告','下一个分类编号')
.addItem('将此报告以PDF格式保存在驱动器中','创建PDF')
.addItem('显示所有工作表','显示所有工作表')
.addItem('为每个学生创建报告','处理所有学生')
.addToUi();
}
函数showGradesSheet(){
var sheets=SpreadsheetApp.getActiveSpreadsheet().getSheets();
//成绩表(?)
var SheetToShow=板材[3];
对于(变量i=0;i