2016-12-15 3 views
1

У меня есть форма Google, которая открывает таблицу по идентификатору, а затем извлекает строки данных из нее. Я в такой ситуации, что иногда, когда я открываю электронную таблицу для получения строк, кажется, что я не забирал последнюю введенную строку данных. В этом случае я хочу отключиться от своего текущего подключения к электронной таблице и снова подключиться к новому соединению, надеясь, что новое соединение вернется с последней вставленной строкой. Ниже мой код:Закройте открытую таблицу

var sheet = SpreadsheetApp.openById("google_spreadsheet_id").getSheets()[0]; 
var numOfDataRows = Number(sheet.getLastRow()) - Number(1); 
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]; 
var dataRows = sheet.getRange(2, 1, numOfDataRows, sheet.getLastColumn()).getValues(); 

Мой вопрос, чтобы восстановить и создать совершенно новое соединение я просто сделать:

var sheet = SpreadsheetApp.openById("google_spreadsheet_id").getSheets()[0]; 

Есть ли способ, закрыть открытую таблицу по идентификатору?

ответ

3

Нет такой вещи, как закрытие электронной таблицы, но существует метод SpreadsheetApp.flush(), который может быть использован для обеспечения того, чтобы любые ожидающие изменения таблицы (например, вставки строк) фактически произошли до завершения кода.

Кроме того, если ваш сценарий инициируется передачей данных в форму, лучше получить данные непосредственно из event object, а не из электронной таблицы, в которой она может или не может показываться.

+0

Используется ли этот метод для конкретной таблицы или всего? Как убедиться, что это относится к моей таблице с помощью spreadsheet_id. –

+1

Метод применяется ко всем электронным таблицам; или, вернее, к пулу ожидающих изменений в SpreadsheetApp. – FTP