Google Spreadsheet无法从0读取属性

时间:2018-06-21 08:34:38

标签: google-apps-script google-sheets google-docs google-spreadsheet-api

您好,我有几个2018年的项目Google Docs,我想将它们的所有URL放在此处的A列的Google Spreadsheet中,因此文档Spreadsheet为空enter image description here

这是我编写的函数,错误是他无法从0 enter image description here中读取属性。我该如何解决?非常感谢。

function copy_Docs_2018_vers_Tableau() {
  
  /** on regarde le folder de départ ici FOLDER_ID où on a les documents Google Docs avec les fiches projet 2018 **/
  var folder = DriveApp.getFolderById(FOLDER_ID); 
  Logger.log('Folder name  ' + folder.getName());
  
  /** on va utiliser les URLs  **/
  var docURLs = [];
  
  var files = DriveApp.getFolderById(FOLDER_ID).getFilesByType(MimeType.GOOGLE_DOCS);
  var file;
  
  while (files.hasNext()){
    file = files.next();
    docURLs.push(file.getUrl());
    Logger.log('File URL  ' + file.getUrl());
  }
  Logger.log(docURLs); // message pour voir si on a qq URLs pour la vérification
  
  /** Le Spreadsheet avec la feuille de calcul + les nombres de lignes & colonnes **/
  var tss = SpreadsheetApp.openById(SPREADSHEET_ID);
  var sheet = tss.getSheets()[0];
  var numRows = sheet.getMaxRows();
  var lastColumn = sheet.getMaxColumns();
  
  // ? à reflechir si on a déja du contenu dans le document ce qu'on aura pour les autres colonnes si on va garder l'ordre des données ou on va le melanger après
  var data = sheet.getRange(2,1,numRows,lastColumn);
  
 

  
  
  for (var i = 1; i < docURLs.length; i++ ) {
    
    /**  prémierement on va insérer le URL du Google Doc **/
    
    data[i][0].setValue(docURLs[i]); 
    sheet.autoResizeColumn(COLUMN_URL);                          //comme le URL est long on va ajuster la colonne 
    
我做了注释中建议的日志,谢谢你在日志中我是1,同样的错误 enter image description here

1 个答案:

答案 0 :(得分:1)

  1. 将行docURLs.push(file.getUrl());更改为docURLs.push([file.getUrl()]);
  2. var data = sheet.getRange(2,1,numRows,lastColumn);更改为var data = sheet.getRange(2,1,docURLs.length,docURLs[0].length);
  3. 删除for循环
  4. 使用setValues()批处理方法可以更快地执行:data.setValues(docURLs);

在您的原始代码中,data是一个范围,您无法像遍历数组那样对其进行迭代。如果您不想执行批处理操作,而是希望一个一个地打印每个URL,建议您使用appendRow()函数。因此,您可以将data[i][0].setValue(docURLs[i])替换为sheet.appendRow(docURLs[i])

,而不是上面的步骤3和4