复制,重命名和移动文档 [英] Copy, rename and move a document

查看:105
本文介绍了复制,重命名和移动文档的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试根据表单数据创建Google文档。我使用其他形式的文档并将其保存为PDF。通过这个脚本,我可以创建新的文档并重命名该文件,但我需要将它们移动到不同的文件夹。我使用的代码用于PDF的工作(在底部)没有问题,但我无法弄清楚我做错了什么。我还没有任何运气在线寻找工作解决方案。

  var TEMPLATE_ID ='template id number'; 
var folder = DriveApp.getFolderById('文件夹ID号码');

//当Form Gets提交
函数onFormSubmit(e){
var ss = SpreadsheetApp.getActiveSpreadsheet();
sheet = ss.getSheetByName(Goal Tracking),
activeSheet = SpreadsheetApp.getActiveSheet(),
copyFile = DriveApp.getFileById(TEMPLATE_ID).makeCopy(),
copyId = copyFile.getId(),
copyDoc = DocumentApp.openById(copyId),
copyBody = copyDoc.getActiveSection(),
numberOfColumns = sheet.getLastColumn(),
activeRowIndex = sheet.getActiveRange()。getRowIndex(),
activeRow = activeSheet.getRange(activeRowIndex,1,1,numberOfColumns).getValues(),
headerRow = activeSheet.getRange(1,1,numberOfColumns ).getValues(),
columnIndex = 0,

fileName =Goals+ activeRow [0] [2] +''+ activeRow [0] [3] +'_' + activeRow [0] [5];

//从窗体获取信息并设置为变量。

var lastName = e.values [2];
var firstName = e.values [3];
var programCode = e.values [4];
var goal1 = e.values [6];
var goal2 = e.values [7];
var goal3 = e.values [8];

//替换占位符键,在我们的Google文档模板中

copyBody.replaceText('%First Name%',firstName);
copyBody.replaceText('%Last Name%',lastName);
copyBody.replaceText('%Program Code%',programCode);
copyBody.replaceText('%Goal Statement 1%',goal1);
copyBody.replaceText('%Goal Statement 2%',goal2);
copyBody.replaceText('%Goal Statement 3%',goal3);

//保存并关闭临时文档

copyDoc.saveAndClose();
copyDoc.setName(fileName);

(继续)

这是问题出在哪里

  folder.addFile(newFile); 
}

执行记录中出现错误,但我不明白为什么我也尝试使用:

$ $ $ $ $ $ $ $ copyDoc.makeCopy(fileName ,文件夹).getId;

设置文件名和文件夹位置,但也失败。 p>

对于它的价值,这里是我用来创建一个可以在这个脚本中工作的PDF。

  copyDoc.saveAndClose(); 

var pdfFile = DriveApp.createFile(copyFile.getAs(application / pdf));
var pdfFile2 = pdfFile .setName(fileName);

folder.addFile(pdfFile2);
copyFile.setTrashed(true);

感谢:)

解决方案

此代码移动文件夹并重命名文件。

  function myFunction(){
var dstFolderId =0B1ECfqTCcLE8c09YZUtqTkVwU3c;

var targetFileId =0B1ECfqTCcLE8SS1PRnJ1cVgxVlk;
var targetFile = DriveApp.getFileById(targetFileId);

var newFileName =HelloWorld.pdf;

//删除当前父文件夹
var parentFolders = targetFile.getParents();
while(parentFolders.hasNext()){
var parent = parentFolders.next();
parent.removeFile(targetFile);
}

//将目标文件添加到新文件夹
var dstFolder = DriveApp.getFolderById(dstFolderId);
dstFolder.addFile(targetFile);

//如果你想要重命名。
targetFile.setName(newFileName);
}


I am trying to create a Google Doc based on form data. I have done this with other forms that take the Doc and save them as PDFs. With this script, I have been able to create new docs and rename the file, but I need to move them to a different folder. The code I used for doing this with PDFs works (at the very bottom) without problems but I can't figure out what I am doing wrong. I have not had any luck searching for working solutions online either.

var TEMPLATE_ID = 'template id number'; 
var folder = DriveApp.getFolderById('folder ID number');

// When Form Gets submitted
function onFormSubmit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
sheet = ss.getSheetByName("Goal Tracking"),
activeSheet = SpreadsheetApp.getActiveSheet(),
copyFile = DriveApp.getFileById(TEMPLATE_ID).makeCopy(),
copyId = copyFile.getId(),
copyDoc = DocumentApp.openById(copyId),
copyBody = copyDoc.getActiveSection(),
numberOfColumns = sheet.getLastColumn(),
activeRowIndex = sheet.getActiveRange().getRowIndex(),
activeRow = activeSheet.getRange(activeRowIndex, 1, 1, numberOfColumns).getValues(),
headerRow = activeSheet.getRange(1, 1, 1, numberOfColumns).getValues(),
columnIndex = 0,

fileName = "Goals " + activeRow[0][2] + ' ' + activeRow[0][3]+'_'+activeRow[0][5]; 

//Get information from form and set as variables.  

var lastName = e.values[2];
var firstName = e.values[3];
var programCode = e.values[4];
var goal1 = e.values[6];
var goal2 = e.values[7];
var goal3 = e.values[8];

// Replace place holder keys,in our google doc template

copyBody.replaceText('%First Name%', firstName);
copyBody.replaceText('%Last Name%', lastName);
copyBody.replaceText('%Program Code%', programCode);
copyBody.replaceText('%Goal Statement 1%', goal1);
copyBody.replaceText('%Goal Statement 2%', goal2);
copyBody.replaceText('%Goal Statement 3%', goal3);  

 // Save and close the temporary document

 copyDoc.saveAndClose();
 copyDoc.setName(fileName);

(continuing on)
Here is where the problem is

 folder.addFile(newFile);
  }

I do get an error in the execution transcript but I don't understand why I am getting it: 'Cannot find method addFile(Document)." I also tried to use:

    copyDoc.makeCopy(fileName, folder).getId;

to set a file name and folder location but it also failed.

For what its worth, here is what I have used to create a PDF that does work in this script.

copyDoc.saveAndClose();

var  pdfFile = DriveApp.createFile(copyFile.getAs("application/pdf"));
var  pdfFile2 = pdfFile.setName(fileName); 

 folder.addFile(pdfFile2); 
    copyFile.setTrashed(true);

Thanks :)

解决方案

This code moves the folder, and rename the file.

function myFunction() {
  var dstFolderId = "0B1ECfqTCcLE8c09YZUtqTkVwU3c";

  var targetFileId = "0B1ECfqTCcLE8SS1PRnJ1cVgxVlk";
  var targetFile = DriveApp.getFileById(targetFileId);

  var newFileName = "HelloWorld.pdf";

  // Remove current parent folders
  var parentFolders = targetFile.getParents();
  while(parentFolders.hasNext()) {
    var parent = parentFolders.next();
    parent.removeFile(targetFile);
  }

  // Add the target file into the new folder
  var dstFolder = DriveApp.getFolderById(dstFolderId);
  dstFolder.addFile(targetFile);

  // Rename if you want.
  targetFile.setName(newFileName);
}

这篇关于复制,重命名和移动文档的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆