Как заставить курсор перейти в строку Google Sheets?

Не кодировать строки напрямую; пусть писатель позаботится об этом. Например, этот код:

import csv

data = [chr(0x03d5) + 'oo', 'b' + chr(0x0101) + 'r']

with open('test.csv', 'w') as f:
    writer = csv.writer(f)
    for item in data:
        writer.writerow([item])

записывает файл

ϕoo
bār

с кодировкой UTF-8 (по крайней мере, в моей системе, где locale.getpreferredencoding(False) возвращает 'UTF-8' ]). Чтобы сделать кодировку явной, вы можете установить кодировку в вызове open:

    with open('test.csv', 'w', encoding='utf8') as f:

Если последняя строка изменена на writer.writerow([item.encode('utf')]) (которая преобразует строки в bytes), он производит

b'\xcf\x95oo'
b'b\xc4\x81r'

В вашем примере попробуйте изменить эту строку:

        writer.writerow({i:v.encode('utf') for i,v in t.items()})

на следующее:

        writer.writerow(t)

Тогда, если это сработает, вы может заменить это:

    for t in test_text
        writer.writerow({i:v.encode('utf') for i,v in t.items()})

с

    writer.writerows(test_text)
0
задан tehhowch 16 January 2019 в 14:47
поделиться

2 ответа

Я думаю, это то, что вы ищете. Вам нужно использовать правильную функцию getRange (), которая определяет размеры диапазона; тот, который принимает только два аргумента, всегда возвращает одну ячейку.

Программа также устанавливает цвет фона для ясности в том, что диапазон на самом деле.

Это также установит выбор, но вы, возможно, захотите понять связь между диапазонами и Классом выбора

function addSong(song) {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getActiveSheet();
  var lastRow = sheet.getLastRow()
  sheet.appendRow([lastRow+1,song]);
  var range = sheet.getRange(sheet.getLastRow(), 1);
  // getRange(row, column, numRows, numColumns)
  var range = sheet.getRange(sheet.getLastRow()-1, 1, 2, 2);

  SpreadsheetApp.setActiveRange(range);
  range.setBackground('green');
}

function test() {
  addSong("Stairway to Heaven");
}
0
ответ дан P Burke 16 January 2019 в 14:47
поделиться

Вы можете попробовать SpreadsheetApp.flush ().

function addSong() {
    var ss = SpreadsheetApp.getActive();
    var sheet = ss.getActiveSheet();
    var lastRow = sheet.getLastRow()
    sheet.appendRow([lastRow+1]);
    SpreadsheetApp.flush();
    var range = sheet.getRange(sheet.getLastRow(), 1);
    SpreadsheetApp.setActiveRange(range);
}

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

0
ответ дан Eliana Cohen 16 January 2019 в 14:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: