簡體   English   中英

動態文件名來自谷歌表格

[英]Dynamic File Name form Google Sheet

使用此腳本,我可以生成一個谷歌文檔,從谷歌表格中獲取一些信息。
實際上,文件名有 function,用戶可以在彈出窗口中輸入文件名。
我會避免這種情況,自動為生成的文檔提供具有以下邏輯的文件名:

A2 中的值(在名為“常規”的選項卡中)+ 單詞“合同”。

我該如何進行?

function CheckList() {
  var tableColumn = [59,61]; //
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var TEMPLATE_ID = 'xxx';
  var ui = SpreadsheetApp.getUi();
  if (TEMPLATE_ID === '') {        
    ui.alert('TEMPLATE_ID needs to be defined in code.gs')
    return
  }
  var copyFile = DriveApp.getFileById(TEMPLATE_ID).makeCopy();
  var copyId = copyFile.getId();
  var copyDoc = DocumentApp.openById(copyId);
  var FILE_NAME = ui.prompt('Inserisci il nome della Checklist:', ui.ButtonSet.OK);
  copyDoc.setName(FILE_NAME.getResponseText());
  var copyBody = copyDoc.getBody();
  var lastColumn = sheet.getLastColumn();
  var activeRowIndex = sheet.getActiveRange().getRowIndex();
  var activeRow = sheet.getRange(activeRowIndex, 1, 1, lastColumn).getDisplayValues()[0];
  var headerRow = sheet.getRange(1, 1, 1, lastColumn).getDisplayValues()[0];
  for (var columnIndex = 0; columnIndex < headerRow.length; columnIndex++) {
    if (columnIndex === tableColumn[0] - 1) { // Check if column corresponds to table data
      try {
        var tableValues = sheet.getRange(2, tableColumn[0], sheet.getLastRow()-1,tableColumn[1]-tableColumn[0]+1).getDisplayValues();
        var placeholder = `%${headerRow[tableColumn[0]-1]}%`;
        var rangeElement = copyBody.findText(placeholder);
        var element = rangeElement.getElement();
        console.log(element.asText().getText())
        var childIndex = copyBody.getChildIndex(element.getParent());
        console.log(childIndex)
        const elementText = copyBody.getChild(childIndex).asText().getText();
        const [beforeText, afterText] = elementText.split(placeholder);
        copyBody.getChild(childIndex).asText().setText('');
        copyBody.insertParagraph(childIndex, beforeText);
        copyBody.insertTable(childIndex+1, tableValues).setColumnWidth(0, 270).setColumnWidth(1, 90).setColumnWidth(2, 90);
        copyBody.insertParagraph(childIndex+2, afterText);
      } catch(err) {
        continue;
      }
    } else if (columnIndex < tableColumn[0] - 1 || columnIndex > tableColumn[1] - 1) {
      var nextValue = formatString(activeRow[columnIndex]);
      copyBody.replaceText('%' + headerRow[columnIndex] + '%', nextValue);
    }                     
  }
copyDoc.saveAndClose();
var url = "https://docs.google.com/document/d/"+ copyId +"";
var htmlString = "<base target=\"_blank\">" +
"<h2><a href=\"" + url + "\">Apri il documento creato!</a></h2>" +
"<p align=center><img src='' /></p>";
var html = HtmlService.createHtmlOutput(htmlString)
.setHeight(600)
.setWidth(600);
SpreadsheetApp.getUi().showModalDialog(html, 'Non mollare!')
}

我自己解決了:

  var company = sheet.getRange('General!A2').getDisplayValue();
  var FILE_NAME = company + " - " + "Contract";
  copyDoc.setName(FILE_NAME);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM