[英]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.