如何替换对象中的文本
How to replace text in object
我是 Google 脚本的新手,我想创建一个脚本,从电子表格中获取图像名称并将该图像插入 google 文档中。我的问题是图像的名称。在电子表格中,它们以相同的文本存储在开头 'testui/'。我需要从头开始删除它。
已尝试使用 replaceText('testui/', ''),但收到消息 - 类型错误:无法在对象 testui/01-03-2019 11-02-14.Signature.054223.png[=11= 中找到函数 replaceText ]
function createDocument() {
var headers = Sheets.Spreadsheets.Values.get('1M9biFRsbMtc6zDcAWgOYqJwNbivvVet-ZCD4joI', 'A1:I1');
var tactics = Sheets.Spreadsheets.Values.get('1M9biFRsbMtc6zDcAWgOYqJwNbivvVet-ZCD4joI', 'A2:I3');
var templateId = '1PxbTS67vrK8tqruNqjkqJMcjtGbqzQ';
for(var i = 0; i < tactics.values.length; i++){
var TimeStamp = tactics.values[i][0];
var AktoTipas = tactics.values[i][2];
var Kodas = tactics.values[i][6];
var Signature = tactics.values[i][8];
/*Here I got message TypeError: Cannot find function replaceText in object testui/01-03-2019 11-02-14.Signature.054223.png
Signature.replaceText('testui/', '')
*/
//Make a copy of the template file
var documentId = DriveApp.getFileById(templateId).makeCopy().getId();
//Rename the copied file
DriveApp.getFileById(documentId).setName(AktoTipas + '-' + TimeStamp + '-' + Kodas);
//Get the document body as a variable
var body = DocumentApp.openById(documentId).getBody();
//Insert the supplier name
body.replaceText('##aktas##', AktoTipas)
body.replaceText('##Laikas##', TimeStamp)
body.replaceText('##Signature##', Signature)
insertImageFromDrive(body, Signature);
}
}
function insertImageFromDrive(body, Signature){
var img = DriveApp.getFilesByName(Signature);
while (img.hasNext()) {
var image = img.next();
body.insertImage(3, image);
}
}
如果你有相同的想法,我会很高兴!非常感谢。
你走在正确的轨道上。但是,replacetext()
是 google 文档正文对象的特定函数。
您从电子表格的各个单元格中获得的值可以按照定义 here 分类到各种 javascript 变量中。是的,我说的是 javascript,google 脚本基于 javascript 语言,对于大多数与操作变量相关的函数,您遵循 javascript 语法和函数。
因此,在这种情况下,Signature
是一个字符串变量,您将使用 javascript 的 string.replace()
函数来更改或操作您的字符串,如文档所述 here
在您的具体情况下,您将执行以下操作:
Signature = Signature.replace('testui/', '')
我是 Google 脚本的新手,我想创建一个脚本,从电子表格中获取图像名称并将该图像插入 google 文档中。我的问题是图像的名称。在电子表格中,它们以相同的文本存储在开头 'testui/'。我需要从头开始删除它。 已尝试使用 replaceText('testui/', ''),但收到消息 - 类型错误:无法在对象 testui/01-03-2019 11-02-14.Signature.054223.png[=11= 中找到函数 replaceText ]
function createDocument() {
var headers = Sheets.Spreadsheets.Values.get('1M9biFRsbMtc6zDcAWgOYqJwNbivvVet-ZCD4joI', 'A1:I1');
var tactics = Sheets.Spreadsheets.Values.get('1M9biFRsbMtc6zDcAWgOYqJwNbivvVet-ZCD4joI', 'A2:I3');
var templateId = '1PxbTS67vrK8tqruNqjkqJMcjtGbqzQ';
for(var i = 0; i < tactics.values.length; i++){
var TimeStamp = tactics.values[i][0];
var AktoTipas = tactics.values[i][2];
var Kodas = tactics.values[i][6];
var Signature = tactics.values[i][8];
/*Here I got message TypeError: Cannot find function replaceText in object testui/01-03-2019 11-02-14.Signature.054223.png
Signature.replaceText('testui/', '')
*/
//Make a copy of the template file
var documentId = DriveApp.getFileById(templateId).makeCopy().getId();
//Rename the copied file
DriveApp.getFileById(documentId).setName(AktoTipas + '-' + TimeStamp + '-' + Kodas);
//Get the document body as a variable
var body = DocumentApp.openById(documentId).getBody();
//Insert the supplier name
body.replaceText('##aktas##', AktoTipas)
body.replaceText('##Laikas##', TimeStamp)
body.replaceText('##Signature##', Signature)
insertImageFromDrive(body, Signature);
}
}
function insertImageFromDrive(body, Signature){
var img = DriveApp.getFilesByName(Signature);
while (img.hasNext()) {
var image = img.next();
body.insertImage(3, image);
}
}
如果你有相同的想法,我会很高兴!非常感谢。
你走在正确的轨道上。但是,replacetext()
是 google 文档正文对象的特定函数。
您从电子表格的各个单元格中获得的值可以按照定义 here 分类到各种 javascript 变量中。是的,我说的是 javascript,google 脚本基于 javascript 语言,对于大多数与操作变量相关的函数,您遵循 javascript 语法和函数。
因此,在这种情况下,Signature
是一个字符串变量,您将使用 javascript 的 string.replace()
函数来更改或操作您的字符串,如文档所述 here
在您的具体情况下,您将执行以下操作:
Signature = Signature.replace('testui/', '')