2017-06-22 77 views
0

我在下面找到了以下代碼,它執行谷歌文檔和谷歌表中的數據之間的合併,使用列標題值作爲關鍵字替換google中的文本佔位符文檔。谷歌文檔合併在谷歌表格中的特定單元格的編輯

// Set up the docs and the spreadsheet access 

var copyFile = DriveApp.getFileById(TEMPLATE_ID).makeCopy(), 
    copyId = copyFile.getId(), 
    copyDoc = DocumentApp.openById(copyId), 
    copyBody = copyDoc.getActiveSection(), 
    activeSheet = SpreadsheetApp.getActiveSheet(), 
    numberOfColumns = activeSheet.getLastColumn(), 
    activeRowIndex = activeSheet.getActiveRange().getRowIndex(), 
    activeRow = activeSheet.getRange(activeRowIndex, 1, 1, 
    numberOfColumns).getValues(), 
    headerRow = activeSheet.getRange(1, 1, 1, numberOfColumns).getValues(), 
    columnIndex = 0 

// Replace the keys with the spreadsheet values 

    for (;columnIndex < headerRow[0].length; columnIndex++) { 

    copyBody.replaceText('%' + headerRow[0][columnIndex] + '%', 
        activeRow[0][columnIndex]) 

此時,此代碼必須手動觸發,並將根據光標所選活動行的位置執行該功能。

或者,我想觸發編輯某一行中特定單元格的函數,並參照同一行中的值執行合併。過去我使用過下面的代碼來做這件事,但不是在上面的上下文中。

function onEditcustom(e) { 

    if(e.range.getColumn() == 1 && e.value == "APPROVED" && 
    e.range.getSheet().getName() == "Sheet 1"){ 

任何幫助將不勝感激!

謝謝!

+0

什麼是你的問題(S)? StackOverflow不是爲別人的項目獲得特別解決方案的地方。 –

+0

嘿安東 - 澄清,我想知道如何才能執行文檔與谷歌表合併時,只有當一個特定的單元格編輯。上面的第一組代碼是它的要點,但我想執行編輯特定單元格的功能。 –

回答

0

您想在Google表格中使用可安裝的觸發器onEdit。您必須使用可安裝版本才能訪問DocumentApp服務。

您還應該注意,onEdit只能用於表單而不能用於文檔。

https://developers.google.com/apps-script/guides/triggers/installable#google_apps_triggers

+0

嗨,喬丹!謝謝回覆。爲了澄清,該腳本位於谷歌表格中,而不是谷歌文檔。只有在編輯一行的特定單元格時,您是否有任何想法才能執行上述功能? –

+0

太好了。在文檔中,您可以看到以手動和編程方式使用可安裝觸發器的兩種方法。看起來你已經寫好了這個函數,你只需要進入腳本編輯器並安裝觸發器即可。 –

+0

嘿喬丹!再次感謝 - 我知道如何運行觸發器。但是,我只是在代碼本身遇到問題。第一個代碼寫入的方式,只有在手動運行時纔會觸發。有什麼想法嗎? –