2

我认为这是专家。就在那儿,一步一步:Google Spreadsheet权限

  • 我创建了一个谷歌电子表格
  • 下面的脚本在其上运行:

/*Updated and maintain by internetgeeks.org*/ 
function onEdit(event) 
{ 
    var timezone = "GMT-3"; var timestamp_format = "dd-MM HH:mm"; // Timestamp Format. 

    if (updateColName = "Nº Cotação") { 
    var sheet = event.source.getSheetByName('Cotações'); //Name of the sheet where you want to run this script. 
    var updateColName = "Nº Cotação"; var timeStampColName = "Data proposta"; 
    var actRng = event.source.getActiveRange(); 
    var editColumn = actRng.getColumn(); 
    var index = actRng.getRowIndex(); 
    var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues(); 
    var dateCol = headers[0].indexOf(timeStampColName); var updateCol = headers[0].indexOf(updateColName); updateCol = updateCol+1; 
    if (dateCol > -1 && index > 1 && editColumn == updateCol) { // only timestamp if 'Last Updated' header exists, but not in the header row itself! 
    var cell = sheet.getRange(index, dateCol + 1); 
    var date = Utilities.formatDate(new Date(), timezone, timestamp_format); cell.setValue(date);} 

    if (updateColName = "Resposta ao Cliente") { 
    var sheet = event.source.getSheetByName('Cotações'); //Name of the sheet where you want to run this script. 
    var updateColName = "Resposta ao Cliente"; var timeStampColName = "Contatado"; 
    var actRng = event.source.getActiveRange(); 
    var editColumn = actRng.getColumn(); 
    var index = actRng.getRowIndex(); 
    var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues(); 
    var dateCol = headers[0].indexOf(timeStampColName); var updateCol = headers[0].indexOf(updateColName); updateCol = updateCol+1; 
    if (dateCol > -1 && index > 1 && editColumn == updateCol) { // only timestamp if 'Last Updated' header exists, but not in the header row itself! 
    var cell = sheet.getRange(index, dateCol + 1); 
    var date = Utilities.formatDate(new Date(), timezone, timestamp_format); cell.setValue(date);} 

    } 
} 
} 
  • 此电子表格与共享其他用户,作为编辑
  • 某些间隔限制某些e ditors

问题

  • 当所有者更新两个描述列(见上面的代码),脚本工作正常

  • 当共享编辑修改的东西,只是第二条件(如果)的脚本正在工作

有人可以帮助我吗?

脚本有问题吗?为什么它只能在电子表格所有者上正常工作?

+0

http://pt.stackoverflow.com/help/dont-ask可能是有趣的。 – pnuts

+0

看起来'updatedColName'是'undefined'。见http://stackoverflow.com/q/16089041/1595451 –

回答

0

而不是使用单一的 '='
使用双 '==' 在你的代码

更改声明如下:

if (updateColName = "Nº Cotação") 

要:

if (updateColName == "Nº Cotação") 

,改变如下:

if (updateColName = "Resposta ao Cliente") 

要:

if (updateColName == "Resposta ao Cliente") 

UPDATE:
下面是完整的脚本代码,应按照您的要求工作:

function onEdit(event) { 
    var actRng = event.source.getActiveRange(); 
    var actSheet = actRng.getSheet(); 
    if(actSheet.getName() == 'Cotações' && actRng.getRowIndex() > 1) { 
    var updateColName = actSheet.getRange(1,actRng.getColumn()).getValue(); 
    var headers = actSheet.getRange(1, 1, 1, actSheet.getLastColumn()).getValues(); 
    var date = Utilities.formatDate(new Date(),'GMT-3','dd-MM HH:mm'); 
    if(updateColName == 'Nº Cotação') { 
     var dateCol = headers[0].indexOf('Data proposta'); 
     actSheet.getRange(actRng.getRowIndex(),dateCol+1).setValue(date); 
    } 
    else if(updateColName == 'Resposta ao Cliente') { 
     var dateCol = headers[0].indexOf('Contatado'); 
     actSheet.getRange(actRng.getRowIndex(),dateCol+1).setValue(date); 
    } 
    } 
}; 
+0

嗨Kishan,谢谢,但是,这样做后,代码不再工作。 –

+0

嗨丹尼尔,我已经更新了我的答案,并发布了完整的代码,应按照您的要求工作。 – Kishan

+0

好的,谢谢Kishan ...我用完整的代码对它进行了测试,但问题依然存在! :( 只是第二如果(条件)正在为另一个用户工作...... –