Flutter gSheets API:如何在工作表中插入/追加多行

问题描述 投票:0回答:2

使用这个https://pub.dev/packages/gsheets

我能够插入一行,但想一次添加多行。不知道为什么谷歌表格没有填满多行

home.dart

for (var i = 0; i < gsIndex; i++)
                       {
                      Map<String, dynamic> pStatus =
                      {
                        ParadeState.rank : usersList[i]['RANK'],
                        ParadeState.name : usersList[i]['NAME'],
                        ParadeState.morningState : dropdownAMValue,
                        ParadeState.afternoonState : dropdownPMValue,
                        ParadeState.date : formatted,
                      };
                      print(pStatus);

                      await UserSheetsApi.insert([pStatus]);

控制台输出:

enter image description here

UserSheetsapi.dart

static Future init() async {
    try {
      final spreadsheet = await _gSheets.spreadsheet(_spreadSheetID);
      _userSheet = await _getWorkSheet(spreadsheet, title: 'Sheet1');

      final firstRow = ParadeState.getPS();
      _userSheet!.values.insertRow(1, firstRow);

    } catch (e) {
      print('Init Error: $e');
    }
  }

  static Future<Worksheet> _getWorkSheet(
      Spreadsheet spreadsheet, {
      required String title,
  }) async {
    try {
      return await spreadsheet.addWorksheet(title);
    } catch (e) {
      return spreadsheet.worksheetByTitle(title)!;
    }

  }

   static insert(List<Map<String, dynamic>> rowList)
  {
    _userSheet!.values.map.appendRows(rowList);
  }

结果:

enter image description here

android flutter append rows
2个回答
1
投票

参加聚会迟到了,所以希望您能够得到这个问题的答案。

您拥有的代码,您将数据作为列表而不是地图发送到 Google 表格。

您需要将 [ ] 替换为 { }。像这样:

for (var i = 0; i < gsIndex; i++) {
        Map<String, dynamic> pStatus =
            {
                ParadeState.rank : usersList[i]['RANK'],
                ParadeState.name : usersList[i]['NAME'],
                ParadeState.morningState : dropdownAMValue,
                ParadeState.afternoonState : dropdownPMValue,
                ParadeState.date : formatted,
            };
            print(pStatus);

            await UserSheetsApi.insert({pStatus});
}

上面还假设

gsIndex
是一个整数。如果您需要列表中的项目数,请使用
gsIndex.length

希望这有帮助。


0
投票

我也有同样的问题,请问你找到答案了吗,希望你能帮助我?

© www.soinside.com 2019 - 2024. All rights reserved.