GAS & Google Spreadsheet API v4 - запись в файл - PullRequest
0 голосов
/ 30 сентября 2019

Я использую Apps Script и авторизовал Drive API и Sheets API для своего кода. Первый шаг, я использую это, чтобы создать электронную таблицу на моем диске Google.

function createSS() {

  var ssName = 'TEST123';
  var parentFolder = '1MCQ7f7KUJ474FHA2IzyASV99Igz6aHEu';
  var resource = {
    title: ssName,
    mimeType: MimeType.GOOGLE_SHEETS,
    parents: [{ id: parentFolder }]
  }
  var ss = Drive.Files.insert(resource);

}

Теперь мне нужно добавить несколько листов и значения ячеек. Я предполагаю, что я должен использовать Sheets API, чтобы открыть файл по ID перед редактированием. Это верно? Как мне этого добиться?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 01 октября 2019

Использование SpreadsheetApp для создания, а затем перемещение созданного файла - это мое рабочее решение. Нет необходимости получать идентификатор файла.

function createSS() {    
  // gets first folder with the given foldername
  var destFolder=DriveApp.getFoldersByName('GAS Logs').next(); 

  // create spreadsheet
  var ss = SpreadsheetApp.create('TEST123');

  // get fist sheet and rename it
  var sheet = ss.getSheets()[0];
  sheet.setName('SHEET123');

  // Add cell data
  sheet.appendRow(['Do','Something', 'Here']);
  sheet.appendRow(['Thanks','For','The', 'Help!']);

  // Make a copy to destination folder and remove the original file
  var copySS = DriveApp.getFileById(ss.getId());
  destFolder.addFile(copySS);
  DriveApp.getRootFolder().removeFile(copySS);
}

Спасибо!

0 голосов
/ 01 октября 2019
  • Чтобы получить вновь созданный файл, вы можете выполнить следующие действия:
  var ss = Drive.Files.insert(resource);
  var url=ss.alternateLink; 
  var id=ss.id;
  • На следующем шаге вы можете использовать SpreadsheetApp и Sheets API для добавления листови значения.

Образец с помощью SpreadsheetApp:

  var ID="XXX";
  var sheetName="XXX";
  var values=[[1,2,3],[4,5,6]];
  var ss=SpreadsheetApp.openById(ID);
  ss.insertSheet('sheetName');
  var sheet=ss.getSheetByName('sheetName');
  var range=sheet.getRange("A1:C2");

  range.setValues(values);

Образец с API листов (пожалуйста, включите первую услугу Sheets Advanced в редакторе GAS):

  var ID="XXX";
  var sheetName="XXX";
  var values="1,2,3, \n 4,5,6";
  var resource = {requests: [
            {
                "addSheet": {
                  "properties": {
                  "title": sheetName,
                  "sheetId": 3
                  } 
               }
             },{
                "pasteData": {
                  "data": values,
                  "type": "PASTE_NORMAL",
                  "delimiter": ",",
                  "coordinate": {
                  "sheetId": 3,
                  "rowIndex": 0,
                  "columnIndex": 0
                   }
                  }
                }
              ]
             };     
  Sheets.Spreadsheets.batchUpdate(resource, ID)

Ссылки:

...