Google apps script 谷歌脚本-当范围内的单元格被修改时,如何生成模板?
我希望每个人在那段时间都很好 发布此消息以获得有关我正在使用的工具的帮助。 我对此非常陌生,我的问题可能是语法/简单逻辑问题,因为我缺乏脚本基础 以下是我想做的: 当AC列中的单元格被勾选(修改)时,我希望我的脚本生成一个模板,并用AC列中已修改的对应行中的数据a、B、C填充该模板 所以这里有三个步骤:Google apps script 谷歌脚本-当范围内的单元格被修改时,如何生成模板?,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我希望每个人在那段时间都很好 发布此消息以获得有关我正在使用的工具的帮助。 我对此非常陌生,我的问题可能是语法/简单逻辑问题,因为我缺乏脚本基础 以下是我想做的: 当AC列中的单元格被勾选(修改)时,我希望我的脚本生成一个模板,并用AC列中已修改的对应行中的数据a、B、C填充该模板 所以这里有三个步骤: 1=>当AC列中的单元格被勾选(修改)时,我希望 脚本 2=>以生成模板 3=>用相应的中的数据A、B、C填写该模板 AC列中已修改的行 至于现在,我一直在努力让1和2一起工作。 如
- 1=>当AC列中的单元格被勾选(修改)时,我希望 脚本
- 2=>以生成模板
- 3=>用相应的
中的数据A、B、C填写该模板 AC列中已修改的行
function onEdit()
{
var sheet = SpreadsheetApp.getActiveSheet();
var editRange = sheet.getActiveRange();
var editRow = editRange.getRow();
var editCol = editRange.getColumn();
var range = sheet.getRange("AC3:AC31");
var rangeRowStart = range.getRow();
var rangeRowEnd = rangeRowStart + range.getHeight();
var rangeColStart = range.getColumn();
var rangeColEnd = rangeColStart + range.getWidth();
if (editRow >= rangeRowStart && editRow <= rangeRowEnd
&& editCol >= rangeColStart && editCol <= rangeColEnd){
GenerateTemplate()
}
}
函数onEdit()
{
var sheet=SpreadsheetApp.getActiveSheet();
var editRange=sheet.getActiveRange();
var editRow=editRange.getRow();
var editCol=editRange.getColumn();
var范围=sheet.getRange(“AC3:AC31”);
var rangeRowStart=range.getRow();
var rangeRowEnd=rangeRowStart+range.getHeight();
var rangeColStart=range.getColumn();
var rangeColEnd=rangeColStart+range.getWidth();
如果(editRow>=rangeRowStart&&editRow=rangeColStart&&editColOneEdit是一个简单的触发器
简单触发器无法访问需要授权的服务
驱动器服务(DriveApp)需要授权=>您不能从onEdit调用它
PS:我认为这就是问题的原因,如果您发布了一条您收到的准确错误消息,那么我将能够确认这一点。onEdit是一个简单的触发器
简单触发器无法访问需要授权的服务
驱动器服务(DriveApp)需要授权=>您不能从onEdit调用它
PS:我认为这就是问题的原因,如果您发布了一条您收到的准确错误消息,那么我将能够确认这一点。因此,对于其他人来说,这是如何工作的
再次前往米兰和伊安塞达诺
触发器无法启动需要授权的访问服务。
我的工具通过DriveApp,这就是触发器不工作的原因
脚本正在工作。但是,要使触发器工作,您需要通过google脚本中的特定窗口安装它
以下是照片:
然后,选择你的函数
又来了!
问候
因此,对于其他人来说,这是它的工作原理
再次前往米兰和伊安塞达诺
触发器无法启动需要授权的访问服务。
我的工具通过DriveApp,这就是触发器不工作的原因
脚本正在工作。但是,要使触发器工作,您需要通过google脚本中的特定窗口安装它
以下是照片:
然后,选择你的函数
又来了!
问候
script.google.com的“执行”窗口中有什么输出?根据下面的回答,尝试将onEdit重命名为其他名称,然后安装onEdit触发器(可以从项目屏幕左侧的“触发器”中完成)我通过谷歌脚本中的特定窗口安装了触发器,它成功了!非常感谢。脚本现在可以工作了。现在,尝试使用我的工具的第3步:)最好的方法是,在script.google.com的“执行”窗口中得到什么输出?根据下面的答案,尝试将onEdit重命名为其他名称,然后安装onEdit触发器(可以从项目屏幕左侧的“触发器”中完成)我通过谷歌脚本中的特定窗口安装了触发器,它工作了!非常感谢。脚本现在正在工作。现在,尝试使用我的工具的第3步:)最好的,你好,米兰非常感谢你让我走上正确的轨道。授权是个问题。我通过特定窗口安装了触发器,它工作了!你好米兰非常感谢你让我走上正确的轨道。授权是个问题。我通过特定的窗口安装了触发器,它成功了!
function GenerateTemplate() {
var documentId = DriveApp.getFileById('XXXXXXXXXXXXXX').makeCopy().getId() ;
DriveApp.getFileById(documentId).setName('CONTRACT_2021_V2');
var body = DocumentApp.openById(documentId).getBody() ;
var sheet = SpreadsheetApp.getActiveSheet() ;
var range = sheet.getRange(3,5);
var data = range.getValue() ;
body.replaceText('##Nom##' , data) ;
}
function onEdit()
{
var sheet = SpreadsheetApp.getActiveSheet();
var editRange = sheet.getActiveRange();
var editRow = editRange.getRow();
var editCol = editRange.getColumn();
var range = sheet.getRange("AC3:AC31");
var rangeRowStart = range.getRow();
var rangeRowEnd = rangeRowStart + range.getHeight();
var rangeColStart = range.getColumn();
var rangeColEnd = rangeColStart + range.getWidth();
if (editRow >= rangeRowStart && editRow <= rangeRowEnd
&& editCol >= rangeColStart && editCol <= rangeColEnd){
GenerateTemplate()
}
}
function GenerateTemplate() {
var documentId = DriveApp.getFileById('XXXXXXXXXXXXXXXXXXX').makeCopy().getId() ;
DriveApp.getFileById(documentId).setName('CONTRACT_2021_V2');
var body = DocumentApp.openById(documentId).getBody() ;
var sheet = SpreadsheetApp.getActiveSheet() ;
var range = sheet.getRange(3,5);
var data = range.getValue() ;
body.replaceText('##Nom##' , data) ;
}
function onEdit()
{
var sheet = SpreadsheetApp.getActiveSheet();
var editRange = sheet.getActiveRange();
var editRow = editRange.getRow();
var editCol = editRange.getColumn();
var range = sheet.getRange("AC3:AC31");
var rangeRowStart = range.getRow();
var rangeRowEnd = rangeRowStart + range.getHeight();
var rangeColStart = range.getColumn();
var rangeColEnd = rangeColStart + range.getWidth();
if (editRow >= rangeRowStart && editRow <= rangeRowEnd
&& editCol >= rangeColStart && editCol <= rangeColEnd){
GenerateTemplate()
}
}