我正在编写一个脚本,将输入谷歌表单的数据传输到谷歌文档中



我正试图编写一个脚本,从格式化的谷歌文档中的谷歌工作表中提取信息。在谷歌更新之前,我已经运行了脚本。它将不再运行。我通常遇到的错误是试图执行,但无法保存。还有非法字符行18。我不知道该怎么解决。我对这一切有点陌生,一路上都在自学。感谢您的帮助。脚本如下。

function onOpen() {
const ui = SpreadsheetApp.getUi();
const menu = ui.createMenu('AutoFill Docs');
menu.addItem('Create New Docs', 'createNewGoogleDocs')
menu.addToUi();
}
function createNewGoogleDocs() {
const googleDocTemplate = DriveApp.getFileById('1- 
TMh56SXOs6dWEsa1YWc5l9nbdTNn5pSIaCC23w-okc');
const destinationFolder = 
DriveApp.getFolderById('1K6U9327cBby96eXoX-YPVTpWRgznt7I1')
const sheet = 
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('TEST DOR 
62');
const rows = sheet.getDataRange().getValues();
rows.forEach(function(row, index){
if (index === 0) return;
if (row[50]) return;
const copy = googleDocTemplate.makeCopy(`${row[2]}, ${row[0]} 
Employee Details` , destinationFolder)
const doc = DocumentApp.openById(copy.getId())
const body = doc.getBody();
const friendlyDate = new Date(row[4]).toLocaleDateString();
body.replaceText('{{Q1}}', row[2]);
body.replaceText('{{Q2}}', row[3]);
body.replaceText('{{Q3}}', friendlyDate);
body.replaceText('{{Q4}}', row[5]);
body.replaceText('{{Q5}}', row[6]);
body.replaceText('{{Q6}}', row[7]);
body.replaceText('{{Q7}}', row[8]);
body.replaceText('{{Q8}}', row[9]);
body.replaceText('{{Q9}}', row[10]);
body.replaceText('{{Q10}}', row[11]);
body.replaceText('{{Q11}}', row[12]);
body.replaceText('{{Q12}}', row[13]);
body.replaceText('{{Q13}}', row[14]);
body.replaceText('{{Q14}}', row[15]);
body.replaceText('{{Q15}}', row[16]);
body.replaceText('{{Q16}}', row[17]);
body.replaceText('{{Q17}}', row[18]);
body.replaceText('{{Q18}}', row[19]);
body.replaceText('{{Q19}}', row[20]);
body.replaceText('{{Q20}}', row[21]);
body.replaceText('{{Q21}}', row[22]);
body.replaceText('{{Q22}}', row[23]);
body.replaceText('{{Q23}}', row[24]);
body.replaceText('{{Q24}}', row[25]);
body.replaceText('{{Q25}}', row[26]);
body.replaceText('{{Q26}}', row[27]);
body.replaceText('{{Q27}}', row[28]);
body.replaceText('{{Q28}}', row[29]);
body.replaceText('{{Q29}}', row[30]);
body.replaceText('{{Q30}}', row[31]);
body.replaceText('{{Q31}}', row[32]);
body.replaceText('{{Q32}}', row[33]);
body.replaceText('{{Q33}}', row[34]);
body.replaceText('{{Q34}}', row[35]);
body.replaceText('{{Q35}}', row[36]);
body.replaceText('{{Q36}}', row[37]);
body.replaceText('{{Q37}}', row[38]);
body.replaceText('{{Q38}}', row[39]);
body.replaceText('{{Q39}}', row[40]);
body.replaceText('{{Q40}}', row[41]);
body.replaceText('{{Q41}}', row[42]);
body.replaceText('{{Q42}}', row[43]);
body.replaceText('{{Q43}}', row[44]);
body.replaceText('{{Q44}}', row[45]);

doc.saveAndClose();
const url = doc.getUrl();
sheet.getRange(index + 1, 46).setValue(url)
})
}

我看到至少两个问题:

格式错误。"第18行"(数字也取决于格式(已断开。可能应该是:

const copy = googleDocTemplate.makeCopy(`${row[2]}, ${row[0]} Employee Details`, destinationFolder);

可能在这里:

doc.saveAndClose();
const url = doc.getUrl();

你关闭了文档,然后试图获取它的URL。它看起来不对。

我建议把线路改成这样:

const url = doc.getUrl();
doc.saveAndClose();

以防万一,这里是固定格式的代码。试试看:

function onOpen() {
const ui = SpreadsheetApp.getUi();
const menu = ui.createMenu('AutoFill Docs');
menu.addItem('Create New Docs', 'createNewGoogleDocs')
menu.addToUi();
}
function createNewGoogleDocs() {
const googleDocTemplate = DriveApp.getFileById('1-TMh56SXOs6dWEsa1YWc5l9nbdTNn5pSIaCC23w-okc');
const destinationFolder = DriveApp.getFolderById('1K6U9327cBby96eXoX-YPVTpWRgznt7I1')
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('TEST DOR 62');
const rows = sheet.getDataRange().getValues();
rows.forEach(function (row, index) {
if (index === 0) return;
if (row[50]) return;
const copy = googleDocTemplate.makeCopy(`${row[2]}, ${row[0]} Employee Details`, destinationFolder)
const doc = DocumentApp.openById(copy.getId())
const body = doc.getBody();
const friendlyDate = new Date(row[4]).toLocaleDateString();
body.replaceText('{{Q1}}', row[2]);
body.replaceText('{{Q2}}', row[3]);
body.replaceText('{{Q3}}', friendlyDate);
// the loop instead of the 40 lines of code
for (var i = 4; i < 45; i++) {
body.replaceText('{{Q'+ i +'}}', row[i+1]);  
}
const url = doc.getUrl();
doc.saveAndClose();
sheet.getRange(index + 1, 46).setValue(url)
})
}

最新更新