2013-08-07 6 views
1

У меня есть документ Google Диск, который записывает значения в электронную таблицу Google Диска с помощью скриптов Google Apps.программно редактировать скрипт в документе Google Диска

Сценария, связанный с документом, выглядит как это:

// must change value to actual spreadsheet ID 
RobProject.spreadsheetID = "spreadsheetID"; 

function onOpen() 
{ 
    // do stuff; 
} 

Каждый раз, когда я создаю таблицу и связанные с ним документы, я вручную изменить значение spreadsheetID для ID электронной таблицы поэтому документы знать, какое таблицу они должны писать свои значения.

Я хотел бы, чтобы программный способ заполнить правильное значение для spreadsheetID в сценариях документов.

Когда я ищу «редактировать скрипты программно», я получаю учебники для создания скриптов Google Apps, а не редактирование скриптов со сценариями. Есть ли способ редактировать скрипты Google Apps с помощью скрипта Google Apps?

ответ

2

Если я правильно понимаю, вы работаете с документом и таблицей. Документ должен знать идентификатор электронной таблицы.

Есть несколько способов получить доступ к скрипту Google Apps Script через API, но это только для автономных проектов, а не для сценариев, связанных с контейнерами (к сожалению).

Вы можете использовать соглашение об именах для документа и таблицы, чтобы вы могли использовать службу Диска для получения из документа в электронную таблицу (DriveApp.getFilesByName()). Или, возможно, организовать их по папке (DriveApp.getFoldersByName(), folder.getFiles()).

Если вы хотите сохранить идентификатор электронной таблицы в свойстве проекта, вы можете создать пользовательский интерфейс в документе, который позволит пользователю открыть список файлов на Диске и выбрать соответствующую электронную таблицу, а затем сохранить идентификатор (ScriptProperties. SetProperty ('SpreadsheetId')).

+0

Организация по папке на самом деле, как я это сделал. Благодаря! –

1

Не забывайте, что параметр onOpen имеет параметр. Вы можете использовать следующий код:

// Define global variable somewhere 
RobProject = {}; 

function onOpen(e) { 

    RobProject.sSheet = e.source; // maybe the spreadsheet object is as useful as the ID 
    RobProject.spreadsheetID = e.source.getId(); 

    // do stuff; 
} 

Пожалуйста, для себя, не пытайтесь писать самомодифицирующийся код.

Смежные вопросы